X-Git-Url: http://git.kpe.io/?p=xlunit.git;a=blobdiff_plain;f=tcase.lisp;fp=tcase.lisp;h=4c13e1eefc05871c2516ffb87701b39094ec9780;hp=414eee87710dbe47031ecac2719debac1495a0b6;hb=77e80d4f7d2d8a1aea36f9239abc7e1b25500ecc;hpb=aa1871a3e62dfee34df09ab613d8366494785d0a diff --git a/tcase.lisp b/tcase.lisp index 414eee8..4c13e1e 100644 --- a/tcase.lisp +++ b/tcase.lisp @@ -2,7 +2,7 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; ID: $Id: tcase.lisp,v 1.4 2003/08/05 22:56:25 kevin Exp $ +;;;; ID: $Id: tcase.lisp,v 1.5 2003/08/06 14:51:01 kevin Exp $ ;;;; Purpose: Test fixtures for XLUnit ;;;; ;;;; ************************************************************************* @@ -72,18 +72,35 @@ that the setup method did for this instance.")) (set-up test) (unwind-protect (run-test test) - (tear-down test))) + (tear-down test)) + (values)) (defmethod run-test ((test test-case)) (funcall (method-body test))) -(defmethod run-protected ((test test-case) res &key (handle-errors t)) +(defmethod run-protected ((test test-case) res + &key (handle-errors t) test-condition) (if handle-errors (handler-case (run-base test) (assertion-failed (condition) (add-failure res test condition)) + (t (condition) + (when (and test-condition + (not (typep condition test-condition))) + (add-failure res test + (make-instance 'assertion-failed + :format-control + "Assert condition ~A, but condition ~A signaled" + :format-arguments + (list test-condition condition))))) (serious-condition (condition) - (add-error res test condition))) - (run-base test)) + (add-error res test condition)) + (:no-error () + (when test-condition + (add-failure res test + (make-instance 'assertion-failed + :format-control "Assert condition ~A, but no condition signaled" + :format-arguments (list test-condition)))))) + (run-base test)) res)