r5463: Auto commit for Debian build
[xlunit.git] / printer.lisp
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; ID:      $Id: printer.lisp,v 1.6 2003/08/05 22:56:25 kevin Exp $
6 ;;;; Purpose: Printer functions for XLUnit
7 ;;;;
8 ;;;; *************************************************************************
9
10 (in-package #:xlunit)
11
12
13 ;----------------------------------------------------------------------
14 ; method print-results
15 ;----------------------------------------------------------------------
16  
17 (defmethod print-results ((obj textui-test-runner) result seconds)
18   (print-header obj result seconds)
19   (print-defects obj (errors result) "error")
20   (print-defects obj (failures result) "failure")
21   (print-footer obj result)
22   (values))
23  
24 (defmethod print-header ((obj textui-test-runner) result seconds)
25   (declare (ignore result))
26   (format (ostream obj) "~&Time: ~D~%~%" (coerce seconds 'float)))
27                                                                                 
28 (defmethod print-defects ((obj textui-test-runner) defects title)
29   (when defects
30     (let ((count (length defects)))
31       (if (= 1 count)
32           (format (ostream obj) "~%There was 1 ~A:~%" title)
33         (format (ostream obj) "~%There were ~D A:~%"
34                 count title))
35       (dotimes (i count)
36         (let* ((defect (nth i defects))
37                (condition (thrown-condition defect)))
38           (format (ostream obj) "~A) ~A: "
39                   (1+ i) (name (failed-test defect)))
40           (apply #'format (ostream obj) 
41                  (simple-condition-format-control condition)
42                  (simple-condition-format-arguments condition))
43           (format (ostream obj) "~%")
44           (when (message condition)
45             (let ((spaces (+ 2 (length (format nil "~D" count)))))
46               (dotimes (i spaces)
47                 (write-char #\space (ostream obj))))
48             (format (ostream obj) "~A~%" (message condition))))))))
49
50
51 (defmethod print-footer ((obj textui-test-runner) result)
52   (let ((failures (failures result))
53         (errors (errors result))
54         (run-tests (run-tests result)))
55     (cond ((and (null failures) (null errors))
56            (format (ostream obj) "~%OK (~a tests)~%" run-tests))
57           (t
58            (format (ostream obj) "~%~%FAILURES!!!~%")
59            (format (ostream obj) "Run: ~a   Failures: ~a   Errors: ~a~%"
60                    run-tests (length failures) (length errors))))))
61
62 (defgeneric summary (result))
63 (defmethod summary ((result test-results))
64   (format nil "~D run, ~D erred, ~D failed"
65           (run-tests result) (error-count result) (failure-count result)))