diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/run.scm | 37 | 
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)) | 
