diff --git a/lisp-unit.lisp b/lisp-unit.lisp index 317a69f..6be32b3 100644 --- a/lisp-unit.lisp +++ b/lisp-unit.lisp @@ -281,6 +281,7 @@ assertion.") (defmacro define-test (name &body body) "Store the test in the test database." + (format t "defining test ~A~%" name) (let ((qname (gensym "NAME-"))) (multiple-value-bind (doc tag code) (parse-body body) `(let* ((,qname (valid-test-name ',name)) @@ -783,6 +784,7 @@ assertion.") (defun record-result (test-name code results) "Run the test code and record the result." + (format t "Beginning test ~A~%" test-name) (let ((result (run-test-thunk test-name code))) ;; Store the result (setf (gethash test-name (database results)) result) @@ -808,6 +810,13 @@ assertion.") "Print a summary of all results to the stream." (let ((pass (pass results)) (fail (fail results))) + ;; fixing issue #48 + (maphash (lambda (test-name result) + (when (fail result) + (format stream " | failed: ~A~%" test-name))) (database results)) + (maphash (lambda (test-name result) + (when (exerr result) + (format stream " | error: ~A~%" test-name))) (database results)) (format stream "~&Unit Test Summary~%") (format stream " | ~D assertions total~%" (+ pass fail)) (format stream " | ~D passed~%" pass) @@ -916,7 +925,12 @@ If MERGE is NIL, then an error is signalled when a conflict occurs." for test-name being each hash-key in table using (hash-value unit-test) if unit-test do - (record-result test-name (code unit-test) results) + (let ((start-time (get-internal-real-time))) + (prog2 (format t "~A ~A~%" package test-name) + (record-result test-name (code unit-test) results) + (format t "~A ~A ~F seconds~%~%" package test-name + (/ (- (get-internal-real-time) start-time) + internal-time-units-per-second)))) else do (push test-name (missing-tests results)) ;; Summarize and return the test results @@ -935,7 +949,12 @@ If MERGE is NIL, then an error is signalled when a conflict occurs." for test-name in test-names as unit-test = (gethash test-name table) if unit-test do - (record-result test-name (code unit-test) results) + (let ((start-time (get-internal-real-time))) + (prog2 (format t "~A ~A~%" package test-name) + (record-result test-name (code unit-test) results) + (format t "~A ~A ~F seconds~%~%" package test-name + (/ (- (get-internal-real-time) start-time) + internal-time-units-per-second)))) else do (push test-name (missing-tests results)) finally @@ -969,7 +988,7 @@ If MERGE is NIL, then an error is signalled when a conflict occurs." (format stream "~& | Failed Form: ~S" (form result)) (call-next-method) (when (extras result) - (format stream "~{~& | ~S => ~S~}~%" (extras result))) + (format stream "~{~& | ~S ~% => ~S~}~%" (extras result))) (format stream "~& |~%")) (defmethod print-failures ((result failure-result) &optional