Added in-suite* that also defines the suite
authorAttila Lendvai <attila.lendvai@gmail.com>
Sat, 30 Sep 2006 15:53:44 +0000 (17:53 +0200)
committerattila.lendvai <attila.lendvai@gmail.com>
Sat, 30 Sep 2006 15:53:44 +0000 (17:53 +0200)
src/packages.lisp
src/suite.lisp

index 1669ad9..cf5aa26 100644 (file)
@@ -24,6 +24,7 @@
            #:make-suite
           #:def-suite
           #:in-suite
+          #:in-suite*
           #:make-test
           #:test
           #:get-test
index bed1945..e7aab24 100644 (file)
@@ -59,14 +59,22 @@ after the execution of this form are, unless specified otherwise,
 in the test-suite named SUITE-NAME.
 
 See also: DEF-SUITE *SUITE*"
+  `(%in-suite ,suite-name))
+
+(defmacro in-suite* (suite-name &key in)
+  "Just like in-suite, but silently creates missing suites."
+  `(%in-suite ,suite-name :in ,in :fail-on-error nil))
+
+(defmacro %in-suite (suite-name &key (fail-on-error t) in)
   (with-unique-names (suite)
     `(progn
        (if-bind ,suite (get-test ',suite-name)
            (setf *suite* ,suite)
           (progn
-            (cerror "Create a new suite named ~A."
-                    "Unkown suite ~A." ',suite-name)
-            (setf (get-test ',suite-name) (make-suite ',suite-name)
+            (when ,fail-on-error
+               (cerror "Create a new suite named ~A."
+                       "Unkown suite ~A." ',suite-name))
+            (setf (get-test ',suite-name) (make-suite ',suite-name :in ',in)
                   *suite* (get-test ',suite-name))))
        ',suite-name)))