;;; -*- Lisp -*- (load "script-support.lisp") (load-asdf) ;;; test asdf run-shell-command function (with-test () #+asdf-unix (progn (assert (eql 1 (asdf:run-shell-command "false"))) (assert (eql 0 (asdf:run-shell-command "true"))) (unless (= 2 (asdf:run-shell-command "./bad-shell-command")) (error "Failed to capture exit status indicating shell command failure.")) (unless (zerop (asdf:run-shell-command "./good-shell-command")) (error "Failed to capture exit status indicating shell command failure.")) (format t "~&a~%") ;; make sure we capture stderr from ASDF:RUN-SHELL-COMMAND to *VERBOSE-OUT* #-(or clisp ecl) (let ((string (with-output-to-string (str) (let ((asdf:*verbose-out* str)) (asdf:run-shell-command "./stderr"))))) (with-input-from-string (str string) (loop for string = (read-line str nil nil) while string if (equalp "Writing to standard error." string) return t finally (format t "Actual content read was:~%") (pprint string) (error "Failed to capture output to standard error using *VERBOSE-OUT*")))) ;; make sure we /don't/ capture stderr from ASDF:RUN-SHELL-COMMAND when ;; *VERBOSE-OUT* is NIL #-(or clisp ecl) (let ((string (with-output-to-string (str) (let ((*error-output* str)) (let ((asdf:*verbose-out* nil)) (asdf:run-shell-command "./stderr")))))) (unless (equalp string "") (with-input-from-string (str string) (format t "Actual content written to *error-output* was:~%") (pprint string) (error "Failed to capture output to standard error using *VERBOSE-OUT*")))) #-ecl (let* ((retval nil) (string (with-output-to-string (str) (let ((asdf:*verbose-out* str)) (setf retval (asdf:run-shell-command "echo \"Writing to standard output.\"")))))) (unless (zerop retval) (error "echo did not run successfully in the shell.")) (with-input-from-string (str string) (loop for s = (read-line str nil nil) while s if (equalp "Writing to standard output." s) return t finally (format t "Actual content read was:~%") (pprint string) (error "Failed to capture output to standard output using *VERBOSE-OUT*")))) #-ecl (let* ((retval nil) (string (with-output-to-string (str) (let ((*standard-output* str)) (let ((asdf:*verbose-out* nil)) (setf retval (asdf:run-shell-command "echo \"Writing to standard output.\""))))))) (unless (zerop retval) (error "echo did not run successfully in the shell.")) (unless (equalp string "") (with-input-from-string (str string) (format t "Actual content written to standard output was:~%") (pprint string) (error "Incorrectly captured output to standard output when not using *VERBOSE-OUT*"))))))