r5452: *** empty log message ***
[xlunit.git] / printer.lisp
index af4adfc32694981fdbb334d027ee2bd4b128ee0c..729e0839e129a8814553a37e70872315f33add25 100644 (file)
@@ -2,7 +2,7 @@
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; ID:      $Id: printer.lisp,v 1.2 2003/08/04 12:16:13 kevin Exp $
+;;;; ID:      $Id: printer.lisp,v 1.3 2003/08/04 16:13:58 kevin Exp $
 ;;;; Purpose: Printer functions for XLUnit
 ;;;;
 ;;;; *************************************************************************
 (in-package #:xlunit)
 
 
+;----------------------------------------------------------------------
+; method print-results
+;----------------------------------------------------------------------
+(defmethod print-results ((ob textui-test-runner) result seconds)
+  (format (ostream ob) "~&Time: ~D~%~%" (coerce seconds 'float))
+  (print-header ob result)
+  (print-errors ob result)
+  (print-failures ob result)
+  t)
+(defmethod print-header ((ob textui-test-runner) result)
+  (let ((failures (failures result))
+        (errors (errors result))
+        (run-tests (run-tests result)))
+    (cond ((and (null failures) (null errors))
+           (format (ostream ob) "~%OK (~a tests)~%" run-tests))
+          (t
+           (format (ostream ob) "~%~%FAILURES!!!~%")
+           (format (ostream ob) "Run: ~a   Failures: ~a   Errors: ~a~%"
+                   run-tests (length failures) (length errors))))))
+                                                                                 
+(defmethod print-errors ((ob textui-test-runner) result)
+  (let ((errors (errors result)))
+    (when errors
+      (if (eql (length errors) 1)
+        (format (ostream ob) "~%There was 1 error:~%")
+        (format (ostream ob) "~%There were ~a errors:~%" (length errors)))
+      (let ((i 1))
+        (mapc #'(lambda (single-error)
+                  (format (ostream ob) "~a) ~a: ~a~%" i
+                          (name (car single-error)) (cdr single-error))
+                  (incf i))
+              errors)))))
+
+(defmethod print-failures ((ob textui-test-runner) result)
+  (let ((failures (failures result)))
+    (when failures
+      (if (eql (length failures) 1)
+        (format (ostream ob) "~%There was 1 failure:~%")
+        (format (ostream ob) "~%There were ~a failures:~%" (length failures)))
+      (let ((i 1))
+        (mapc #'(lambda (single-failure)
+                  (format (ostream ob) "~a) ~a: ~a~%" i (name (car single-failure))
+                          (or (message (cdr single-failure)) ""))
+                  (incf i))
+              failures)))))
+
+#|
 (defun result-printer (result seconds stream)
   (format stream "~&Time: ~D~%~%" (coerce seconds 'float))
-  (print-defects (test-errors result) "error" stream)
-  (print-defects (test-failures result) "failure" stream)
+  (print-defects (errors result) "error" stream)
+  (print-defects (failures result) "failure" stream)
   (if (was-successful result)
-      (format stream "OK (~D tests)~%" (test-count result))
+      (format stream "OK (~D tests)~%" (run-count result))
     (progn
       (format stream "~%FAILURES!!!~%")
       (format stream "Tests run: ~D, Failures: ~D, Errors: ~D~%"
-             (test-count result) (length (test-failures result))
-             (length (test-errors result))))))
+             (run-count result) (failure-count result)
+             (error-count result)))))
 
 (defun print-defects (defects type stream)
   (when defects
@@ -38,7 +87,9 @@
                  (thrown-condition defect)))
          (fresh-line stream))))))
 
+|#
+
+(defgeneric summary (result))
 (defmethod summary ((result test-result))
   (format nil "~D run, ~D erred, ~D failed"
-         (test-count result) (length (test-errors result))
-         (length (test-failures result))))
+         (run-count result) (error-count result) (failure-count result)))