r5457: *** empty log message ***
[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.5 2003/08/04 19:31:34 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 ((ob textui-test-runner) result seconds)
18   (format (ostream ob) "~&Time: ~D~%~%" (coerce seconds 'float))
19   (print-header ob result)
20   (print-errors ob result)
21   (print-failures ob result)
22   t)
23  
24 (defmethod print-header ((ob textui-test-runner) result)
25   (let ((failures (failures result))
26         (errors (errors result))
27         (run-tests (run-tests result)))
28     (cond ((and (null failures) (null errors))
29            (format (ostream ob) "~%OK (~a tests)~%" run-tests))
30           (t
31            (format (ostream ob) "~%~%FAILURES!!!~%")
32            (format (ostream ob) "Run: ~a   Failures: ~a   Errors: ~a~%"
33                    run-tests (length failures) (length errors))))))
34                                                                                  
35 (defmethod print-errors ((ob textui-test-runner) result)
36   (let ((errors (errors result)))
37     (when errors
38       (if (eql (length errors) 1)
39         (format (ostream ob) "~%There was 1 error:~%")
40         (format (ostream ob) "~%There were ~a errors:~%" (length errors)))
41       (let ((i 1))
42         (mapc #'(lambda (single-error)
43                   (format (ostream ob) "~a) ~a: ~a~%" i
44                           (name (failed-test single-error))
45                           (thrown-condition single-error))
46                   (incf i))
47               errors)))))
48
49 (defmethod print-failures ((ob textui-test-runner) result)
50   (let ((failures (failures result)))
51     (when failures
52       (if (eql (length failures) 1)
53         (format (ostream ob) "~%There was 1 failure:~%")
54         (format (ostream ob) "~%There were ~a failures:~%" (length failures)))
55       (let ((i 1))
56         (mapc #'(lambda (single-failure)
57                   (format (ostream ob) "~a) ~a: ~a~%" i 
58                           (name (failed-test single-failure))
59                           (or (message (thrown-condition single-failure)) ""))
60                   (incf i))
61               failures)))))
62
63 (defgeneric summary (result))
64 (defmethod summary ((result test-results))
65   (format nil "~D run, ~D erred, ~D failed"
66           (run-tests result) (error-count result) (failure-count result)))