Allow SIGNALS marco to have a description
authorMarco Baringer <mb@bese.it>
Fri, 20 Jan 2006 17:35:10 +0000 (18:35 +0100)
committerMarco Baringer <mb@bese.it>
Fri, 20 Jan 2006 17:35:10 +0000 (18:35 +0100)
src/check.lisp

index b8ec760..ecf6155 100644 (file)
@@ -193,7 +193,8 @@ Wrapping the TEST form in a NOT simply preducse a negated reason string."
      :test-expr ',condition)
     (add-result 'test-passed :test-expr ',condition)))
 
-(defmacro signals (condition &body body)
+(defmacro signals ((condition &optional reason-control reason-args)
+                   &body body)
   "Generates a pass if BODY signals a condition of type
 CONDITION. BODY is evaluated in a block named NIL, CONDITION is
 not evaluated."
@@ -208,7 +209,9 @@ not evaluated."
         (block nil
           ,@body
            (process-failure
-            :reason (format nil "Failed to signal a ~S" ',condition)
+            :reason ,(if reason-control
+                         `(format nil ,reason-control ,@reason-args)
+                         `(format nil "Failed to signal a ~S" ',condition))
             :test-expr ',condition)
           (return-from ,block-name nil))))))