summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPeter Bex <peter@more-magic.net>2015-07-18 14:12:23 +0200
committerPeter Bex <peter@more-magic.net>2015-07-18 14:12:23 +0200
commit0802db49a40586f24db70a95d27500e2845f1eda (patch)
treed4a9d6397e566613c077c8a2916a9efce629777b /tests
parent5586a516529b68fda6d4e44b5958109da57b664f (diff)
downloadscsh-process-0802db49a40586f24db70a95d27500e2845f1eda.tar.gz
Fix default output redirections to ignore stderr.
This is what scsh does as well, and is more like a regular UNIX shell. Thanks to Haochi Kiang for reporting the bug and providing a patch.
Diffstat (limited to 'tests')
-rw-r--r--tests/run.scm37
1 files changed, 34 insertions, 3 deletions
diff --git a/tests/run.scm b/tests/run.scm
index ff7896d..2510c7e 100644
--- a/tests/run.scm
+++ b/tests/run.scm
@@ -18,6 +18,23 @@
"This is a test"
(run/string* (lambda () (display "This is a test"))))
+ ;; Reported by Haochi Kiang
+ (test "run/string* does not redirect stderr"
+ '("This should go to stdout" "")
+ (let* ((strerr (open-output-string))
+ (ignored-output ; Collected in child process
+ (with-error-output-to-port
+ strerr
+ (lambda ()
+ (run/string*
+ (lambda ()
+ (display "This should go to stdout")
+ ;; This doesn't end up in the parent process'
+ ;; buffer because the memory isn't shared.
+ (display "This should go to stderr"
+ (current-error-port))))))))
+ (list ignored-output (get-output-string strerr))))
+
(test-error "run*/string* raises error if subprocess has nonzero exit status"
(run*/string* (lambda () (display "ohai") (exit 1)))))
@@ -29,6 +46,13 @@
"hi, there\n"
(run/string (echo "hi, there")))
+ ;; Reported by Haochi Kiang
+ (test "Simple run/string with output to stderr"
+ ""
+ ;; TODO: Find some way so this doesn't pollute the actual
+ ;; process's stderr
+ (run/string (sh -c "echo 'hi, there' >&2")))
+
(test "Unquote-splicing run/string"
"hi, there\n"
(run/string (echo ,@(list "hi," "there"))))
@@ -78,11 +102,11 @@
(print "hi, there"))
(cat))))))
- (let ((outfile "outfile"))
+ (let ((the-outfile "outfile"))
(test "Subprocess writing to a file"
"hi, there\n"
- (begin (run (echo "hi, there") (> ,outfile))
- (read-all "outfile"))))
+ (begin (run (echo "hi, there") (> ,the-outfile))
+ (read-all the-outfile))))
(delete-file* "outfile")
(let ((echo-command 'echo))
@@ -94,6 +118,13 @@
(read-all "outfile"))))
(delete-file* "outfile")
+ ;; Reported by Haochi Kiang
+ (test "Output redirection with pipe ignores stderr"
+ ""
+ ;; TODO: Find some way so this doesn't pollute the actual
+ ;; process's stderr
+ (run/string (pipe (sh -c "echo foo >&2") (cat))))
+
(test "Nested output redirection with pipe+"
"foo\n"
(run/string (pipe+ ((1 0))