X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=printer.lisp;h=c89bfff0b722706124850b213fa5959d121e68c1;hb=381a23bb7ab8dd206bcd430ce9c7ee9c53e52f13;hp=af4adfc32694981fdbb334d027ee2bd4b128ee0c;hpb=8133177de9c5d202520bd83b5e797ef7a39942ad;p=xlunit.git diff --git a/printer.lisp b/printer.lisp index af4adfc..c89bfff 100644 --- a/printer.lisp +++ b/printer.lisp @@ -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.4 2003/08/04 17:04:49 kevin Exp $ ;;;; Purpose: Printer functions for XLUnit ;;;; ;;;; ************************************************************************* @@ -10,35 +10,55 @@ (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)))))) +;---------------------------------------------------------------------- +; 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))))) -(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 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))))) -(defmethod summary ((result test-result)) +(defgeneric summary (result)) +(defmethod summary ((result test-results)) (format nil "~D run, ~D erred, ~D failed" - (test-count result) (length (test-errors result)) - (length (test-failures result)))) + (run-tests result) (error-count result) (failure-count result)))