;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; ;;;; ID: $Id: printer.lisp,v 1.2 2003/08/04 12:16:13 kevin Exp $ ;;;; Purpose: Printer functions for XLUnit ;;;; ;;;; ************************************************************************* (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))))