0.8.10.9:
[sbcl.git] / tests / assertoid.lisp
index c6dd931..0e76532 100644 (file)
 ;;;; absolutely no warranty. See the COPYING and CREDITS files for
 ;;;; more information.
 
-(cl:in-package :cl-user)
+(cl:defpackage "ASSERTOID"
+  (:use "CL")
+  (:export "GRAB-CONDITION" "RAISES-ERROR?" "ASSERTOID"))
+
+(cl:in-package "ASSERTOID")
 
 (defmacro grab-condition (&body body)
   `(nth-value 1
      (ignore-errors ,@body)))
 
-(defmacro raises-error? (&body body)
-  `(typep (nth-value 1 (ignore-errors ,@body)) 'error))
+(defmacro raises-error? (form &optional (error-subtype-spec 'error))
+  `(typep (nth-value 1 (ignore-errors ,form)) ',error-subtype-spec))
 
 ;;; EXPR is an expression to evaluate (both with EVAL and with
 ;;; COMPILE/FUNCALL). EXTRA-OPTIMIZATIONS is a list of lists of
@@ -40,8 +44,8 @@
 ;;; LAMBDA. EXPECTED-EQL, EXPECTED-EQUAL, and EXPECTED-EQUALP are
 ;;; shorthand for special cases of EXPECTED-LAMBDA.
 ;;;
-;;; Use EXPECTED-ERROR to require an error to be thrown. Use
-;;; EXPECTED-ERROR-LAMBDA to require that an error be thrown and
+;;; Use EXPECTED-ERROR to require an error to be signalled. Use
+;;; EXPECTED-ERROR-LAMBDA to require that an error be signalled and
 ;;; that further it satisfies the given lambda.
 (defmacro assertoid (expr
                     &key
@@ -85,7 +89,7 @@
     (flet ((frob (evaloid)
                 (let ((result (funcall evaloid expr)))
                   (unless (funcall eval-expected-lambda result)
-                    (error "failed assertoid" expr))))
+                    (error "failed assertoid ~S" expr))))
           (compile-as-evaloid (optimizations)
              (lambda (expr)
               (funcall (compile nil