diff --git a/test/test-run-program-unix.script b/test/test-run-program-unix.script index a926451e3f863ac7f8b7ca9654853c2c80341500..7429542a5b8d3af2878cc5cdc29ab587e4ca670e 100644 --- a/test/test-run-program-unix.script +++ b/test/test-run-program-unix.script @@ -212,14 +212,30 @@ (define-test "launch-program :output t" - (launch-program (list "echo" "echoing output") - :output t)) + (catch 'unimplemented + (handler-bind + ( + #+lispworks + (not-implemented-error + #'(lambda (x) + (format t "~&This behavior is expected to be unimplemented on this lisp.~%") + (throw 'unimplemented t)))) + (launch-program (list "echo" "echoing output") + :output t)))) (define-test "launch-program :error-output t" - (uiop:wait-process - (launch-program (format nil "./exiter.sh 0 ~a" output-string) - :error-output t))) + (catch 'unimplemented + (handler-bind + ( + #+lispworks + (not-implemented-error + #'(lambda (x) + (format t "~&This behavior is expected to be unimplemented on this lisp.~%") + (throw 'unimplemented t)))) + (uiop:wait-process + (launch-program (format nil "./exiter.sh 0 ~a" output-string) + :error-output t))))) (define-test ":output <file> (file e.)" diff --git a/uiop/launch-program.lisp b/uiop/launch-program.lisp index 62754456d4cb422bb51dd6f57acf9b453ea5d0dd..a5bd320260d851822037174c5c34cf934d87e99a 100644 --- a/uiop/launch-program.lisp +++ b/uiop/launch-program.lisp @@ -168,8 +168,13 @@ argument to pass to the internal RUN-PROGRAM" role specifier)) (t (parameter-error "~S IO specifier invalid for ~S" specifier role)))) ((eql t) + #+lispworks + (not-implemented-error :interactive-output + "On this lisp implementation, cannot interpret ~a value of ~a" + specifier role) + #-lispworks (cond ((eq role :error-output) *error-output*) - ((eq role :output) *standard-output*) + ((eq role :output) #+lispworks *terminal-io* #-lispworks *standard-output*) ((eq role :input) *standard-input*))) (otherwise (parameter-error "Incorrect I/O specifier ~S for ~S"