X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-util.lisp;h=8381019c7be36d165902be558dfdd26ff3ab93ac;hb=2fb47966f49dd426130862dc7a96a7ffdea42bbb;hp=dbd66a789c1e1f4e2b04d44af3eed1bda6131fa2;hpb=4c81c652cdc32faefee1bccb84c3c9a7854e3edd;p=sbcl.git diff --git a/tests/test-util.lisp b/tests/test-util.lisp index dbd66a7..8381019 100644 --- a/tests/test-util.lisp +++ b/tests/test-util.lisp @@ -20,25 +20,26 @@ (defmacro with-test ((&key fails-on broken-on skipped-on name) &body body) (let ((block-name (gensym))) - `(cond - ((broken-p ,broken-on) - (fail-test :skipped-broken ',name "Test broken on this platform")) - ((skipped-p ,skipped-on) - (fail-test :skipped-disabled ',name "Test disabled for this combination of platform and features")) - (t - (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 - (log-msg "Running ~S" ',name) - (start-test) - ,@body - (if (expected-failure-p ,fails-on) - (fail-test :unexpected-success ',name nil) - (log-msg "Success ~S" ',name))))))))) + `(progn + (start-test) + (cond + ((broken-p ,broken-on) + (fail-test :skipped-broken ',name "Test broken on this platform")) + ((skipped-p ,skipped-on) + (fail-test :skipped-disabled ',name "Test disabled for this combination of platform and features")) + (t + (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 + (log-msg "Running ~S" ',name) + ,@body + (if (expected-failure-p ,fails-on) + (fail-test :unexpected-success ',name nil) + (log-msg "Success ~S" ',name)))))))))) (defun report-test-status () (with-standard-io-syntax @@ -53,15 +54,25 @@ (setf *test-count* 0)) (incf *test-count*)) +(defun really-invoke-debugger (condition) + (with-simple-restart (continue "Continue") + (let ((*invoke-debugger-hook* *invoke-debugger-hook*)) + (enable-debugger) + (invoke-debugger condition)))) + (defun fail-test (type test-name condition) - (log-msg "~@<~A ~S ~:_due to ~S: ~4I~:_\"~A\"~:>" - type test-name condition condition) + (if (stringp condition) + (log-msg "~@<~A ~S ~:_~A~:>" + type test-name condition) + (log-msg "~@<~A ~S ~:_due to ~S: ~4I~:_\"~A\"~:>" + type test-name condition condition)) (push (list type *test-file* (or test-name *test-count*)) *failures*) - (when (or (and *break-on-failure* - (not (eq type :expected-failure))) - *break-on-expected-failure*) - (really-invoke-debugger condition))) + (unless (stringp condition) + (when (or (and *break-on-failure* + (not (eq type :expected-failure))) + *break-on-expected-failure*) + (really-invoke-debugger condition)))) (defun expected-failure-p (fails-on) (sb-impl::featurep fails-on)) @@ -72,12 +83,6 @@ (defun skipped-p (skipped-on) (sb-impl::featurep skipped-on)) -(defun really-invoke-debugger (condition) - (with-simple-restart (continue "Continue") - (let ((*invoke-debugger-hook* *invoke-debugger-hook*)) - (enable-debugger) - (invoke-debugger condition)))) - (defun test-env () (cons (format nil "SBCL_MACHINE_TYPE=~A" (machine-type)) (cons (format nil "SBCL_SOFTWARE_TYPE=~A" (software-type))