r5465: *** empty log message ***
[xlunit.git] / tcase.lisp
index 414eee87710dbe47031ecac2719debac1495a0b6..4c13e1eefc05871c2516ffb87701b39094ec9780 100644 (file)
@@ -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)