Added :default and :error arguments to get-test (instead of just an &optional default...
authorMarco Baringer <mb@bese.it>
Thu, 29 Nov 2012 10:58:16 +0000 (11:58 +0100)
committerMarco Baringer <mb@bese.it>
Thu, 29 Nov 2012 11:01:03 +0000 (12:01 +0100)
Nowhere in fiveam's code was get-test called with the default argument.

src/classes.lisp
src/test.lisp

index dd33429..7404c49 100644 (file)
                            information will be collected when the
                            test is run.")))
 
+(defgeneric testable-object-p (object)
+  (:method ((object testable-object)) t)
+  (:method ((object t)) nil))
+
 (defmethod print-object ((test testable-object) stream)
   (print-unreadable-object (test stream :type t :identity t)
     (format stream "~S" (name test))))
index 02296c1..3d79595 100644 (file)
   "Lookup table mapping test (and test suite)
   names to objects.")
 
-(defun get-test (key &optional default)
-  (gethash key *test* default))
+(defun get-test (key &key default error)
+  "Finds the test named KEY. If KEY is a testable-object (a test case
+or a test suite) then we just return KEY, otherwise we look for a test
+named KEY in the *TEST* hash table."
+  (if (testable-object-p key)
+      key
+      (multiple-value-bind (value foundp)
+          (gethash key *test*)
+        (if foundp
+            value
+            (if error
+                (error "Unable to find test named ~S." key)
+                default)))))
 
 (defun (setf get-test) (value key)
   (setf (gethash key *test*) value))