X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Ftest.lisp;h=b6e85dbd6d9a20de7088a19aec8f31c2fa97ae94;hb=d71409025cf489343851dc844e5619f5aa7754bc;hp=ccdcb0a49363dd3267982e6ce4a3d40c185d0caf;hpb=4f250825a6c2a0686666277ab394c31984f62e0c;p=fiveam.git diff --git a/src/test.lisp b/src/test.lisp index ccdcb0a..b6e85db 100644 --- a/src/test.lisp +++ b/src/test.lisp @@ -12,6 +12,7 @@ ;;;; collection of tests and test suites. (deflookup-table test + :at-redefinition nil :documentation "Lookup table mapping test (and test suite) names to objects.") @@ -45,8 +46,9 @@ If DEPENDS-ON is a symbol it is interpreted as `(AND depending on another. SUITE defaults to the current value of *SUITE*." - (destructuring-bind (name &key depends-on (suite nil suite-supplied-p)) + (destructuring-bind (name &key depends-on (suite nil suite-supplied-p) (compile-at :run-time)) (ensure-list name) + (declare (type (member :run-time :definition-time) compile-at)) (let (description) (setf description (if (stringp (car body)) (pop body) @@ -54,9 +56,13 @@ SUITE defaults to the current value of *SUITE*." `(progn (setf (get-test ',name) (make-instance 'test-case :name ',name + :runtime-package ,*package* :test-lambda (lambda () - (funcall (compile nil '(lambda () ,@body)))) + ,@(ecase compile-at + (:run-time `((funcall (let ((*package* ,*package*)) + (compile nil '(lambda () ,@body)))))) + (:definition-time body))) :description ,description :depends-on ',depends-on)) ,(if suite-supplied-p