r5449: *** empty log message ***
[xlunit.git] / printer.lisp
diff --git a/printer.lisp b/printer.lisp
new file mode 100644 (file)
index 0000000..16f1bdb
--- /dev/null
@@ -0,0 +1,46 @@
+;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
+;;;; *************************************************************************
+;;;; FILE IDENTIFICATION
+;;;;
+;;;; Name:        printer.lisp
+;;;; Purpose:     Printer functions for XLUnit
+;;;; Authors:     Kevin Rosenberg
+;;;;
+;;;; $Id: printer.lisp,v 1.1 2003/08/04 12:01:54 kevin Exp $
+;;;; *************************************************************************
+
+(in-package #:xlunit)
+
+
+(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)
+  (if (was-successful result)
+      (format stream "OK (~D tests)~%" (test-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))))))
+
+(defun print-defects (defects type stream)
+  (when defects
+    (let ((count (length defects)))
+      (if (= count 1)
+         (format stream "~&There was ~D ~A:~%" count type)
+       (format stream "~&There were ~D ~As:~%" count type))
+      (dotimes (i count)
+       (let ((defect (nth i defects)))
+         (format stream "~&~D) ~A " i (class-name
+                                       (class-of (failed-test defect))))
+         (apply #'format stream (simple-condition-format-control 
+                                 (thrown-condition defect))
+                (simple-condition-format-arguments 
+                 (thrown-condition defect)))
+         (fresh-line stream))))))
+
+(defmethod summary ((result test-result))
+  (format nil "~D run, ~D erred, ~D failed"
+         (test-count result) (length (test-errors result))
+         (length (test-failures result))))