1.0.43.29: fix OVERAGER-CHARACTER-BUFFERING test-case
[sbcl.git] / tests / test-util.lisp
index 00a986d..cdc422c 100644 (file)
 (defvar *break-on-failure* nil)
 (defvar *break-on-expected-failure* nil)
 
+(defun log-msg (&rest args)
+  (format *trace-output* "~&::: ")
+  (apply #'format *trace-output* args)
+  (terpri *trace-output*)
+  (force-output *trace-output*))
+
 (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
+           (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)))))))
 
 (defun report-test-status ()
-  (with-standard-io-syntax 
+  (with-standard-io-syntax
       (with-open-file (stream "test-status.lisp-expr"
                               :direction :output
                               :if-exists :supersede)
@@ -36,7 +47,9 @@
     (setf *test-count* 0))
   (incf *test-count*))
 
-(defun fail-test (type test-name condition)  
+(defun fail-test (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*
@@ -52,3 +65,8 @@
     (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))
+              (posix-environ))))