X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-util.lisp;h=e49c62763e323321c47aad92ed6b4017ecbf9b5a;hb=35f870eecfcaaba496d54e0f290b09e63884f74c;hp=8ed24c83716f6e8c23da0679fc665b086a02e574;hpb=b3e3fbe7d381147fccc8a3027cb6fae923e57d13;p=sbcl.git diff --git a/tests/test-util.lisp b/tests/test-util.lisp index 8ed24c8..e49c627 100644 --- a/tests/test-util.lisp +++ b/tests/test-util.lisp @@ -13,15 +13,18 @@ (defvar *break-on-expected-failure* nil) (defmacro with-test ((&key fails-on name) &body body) - `(handler-case (progn - (start-test) - ,@body - (when (expected-failure-p ,fails-on) - (fail-test :unexpected-success ',name nil))) - (error (error) - (if (expected-failure-p ,fails-on) - (fail-test :expected-failure ',name error) - (fail-test :unexpected-failure ',name error))))) + (let ((block-name (gensym))) + `(block ,block-name + (handler-bind ((error (lambda (error) + (if (expected-failure-p ,fails-on) + (fail-test :expected-failure ',name error) + (fail-test :unexpected-failure ',name error)) + (return-from ,block-name)))) + (progn + (start-test) + ,@body + (when (expected-failure-p ,fails-on) + (fail-test :unexpected-success ',name nil))))))) (defun report-test-status () (with-standard-io-syntax