TEST macro now recompiles the body on every run.
authorMarco Baringer <mb@bese.it>
Tue, 24 Jan 2006 11:38:10 +0000 (12:38 +0100)
committerMarco Baringer <mb@bese.it>
Tue, 24 Jan 2006 11:38:10 +0000 (12:38 +0100)
This idea, blatenly stolen from LispUnit, ensures that tests will
always use the latest macro definitions.

src/test.lisp

index 2e3020a..7d763d1 100644 (file)
@@ -43,18 +43,18 @@ depending on another.
 SUITE defaults to the current value of *SUITE*."
   (destructuring-bind (name &key depends-on (suite nil suite-supplied-p))
       (ensure-list name)
-    (let (lambda description)
+    (let (description)
       (setf description (if (stringp (car body))
                            (pop body)
-                           "")
-           lambda body)
+                           ""))
       `(progn
-        (setf (get-test ',name)
-              (make-instance 'test-case
-                             :name ',name
-                             :test-lambda (lambda () ,@lambda)
-                             :description ,description
-                             :depends-on ',depends-on))
+        (setf (get-test ',name) (make-instance 'test-case
+                                                :name ',name
+                                                :test-lambda
+                                                (lambda ()
+                                                  (funcall (compile nil '(lambda () ,@body))))
+                                                :description ,description
+                                                :depends-on ',depends-on))
         ,(if suite-supplied-p
              `(setf (gethash ',name (tests (get-test ',suite)))
                     ',name)