Rebind a copy of *readtable* before running a test
[fiveam.git] / src / run.lisp
index 3f03cfa..59e6455 100644 (file)
@@ -131,7 +131,7 @@ run."))
                  (add-result 'unexpected-test-failure
                              :test-expr nil
                              :test-case test
-                             :reason (format nil "Unexpected Error: ~S." e)
+                             :reason (format nil "Unexpected Error: ~S~%~A." e e)
                              :condition e))
                (run-it ()
                  (let ((result-list '()))
@@ -147,7 +147,8 @@ run."))
                                              (abort-test e)
                                              (return-from run-it result-list)))))
                      (restart-case
-                         (funcall (test-lambda test))
+                         (let ((*readtable* (copy-readtable)))
+                           (funcall (test-lambda test)))
                        (retest ()
                          :report (lambda (stream)
                                    (format stream "~@<Rerun the test ~S~@:>" test))
@@ -194,7 +195,7 @@ run."))
 
 ;;;; ** Public entry points
 
-(defun run! (test-spec)
+(defun run! (&optional (test-spec *suite*))
   "Equivalent to (explain (run TEST-SPEC))."
   (explain! (run test-spec)))