diff --git a/test/script-support.lisp b/test/script-support.lisp index f24f9e6ed79d1a939134d84d445494f251799344..f18f441ef0bda0752347aa212a0a1d56b950ddd6 100644 --- a/test/script-support.lisp +++ b/test/script-support.lisp @@ -130,13 +130,22 @@ (ext:quit :status return) (error "Don't know how to quit Lisp; wanting to use exit code ~a" return)) +(defun finish-outputs () + (loop :for s :in (list *standard-output* *error-output* *trace-output* *debug-io*) + :do (finish-output s))) + +(defun redirect-outputs () + (finish-outputs) + (setf *error-output* *standard-output* + *trace-output* *standard-output*)) + (defun leave-lisp (message return) + (finish-outputs) (fresh-line *error-output*) (when message (format *error-output* message) (terpri *error-output*)) - (finish-output *error-output*) - (finish-output *standard-output*) + (finish-outputs) (exit-lisp return)) (defmacro assert-equal (x y) @@ -150,6 +159,7 @@ "Unless the environment variable DEBUG_ASDF_TEST is bound, write a message and exit on an error. If *asdf-test-debug* is true, enter the debugger." + (redirect-outputs) (handler-bind ((error (lambda (c) (format *error-output* "~&~a~&" c)