summaryrefslogtreecommitdiff
path: root/test/run.scm
blob: 125684501318c662e943bb604c8fa53b1e9a3261 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(include "../scsh-process.scm")
(import scsh-process)

(use test posix)

(test-group "Procedural interface"
  (test "Fork/pipe \"hello world\" example from SCSH reference manual"
        "Hello, world."
        (begin (fork/pipe
                (lambda ()
                  (with-output-to-port (open-output-file* 1)
                    (lambda () (display "Hello, world.\n") (exit 0)))))
               (read-line (open-input-file* 0))))
  (test "run/string* returns a string output in a subprocess"
        "This is a test"
        (run/string* (lambda () (display "This is a test") (exit 0)))))

(test-group "Macro (EPF) interface"
 (delete-file* "outfile")               ; Leftovers
 (let ((outfile "outfile"))
   (test "Subprocess writing to a file"
         "hi, there\n"
         (begin (run (echo "hi, there") (> ,outfile))
                (read-all "outfile"))))
 
 (delete-file* "outfile")
 (let ((echo-command 'echo))
   (test "Subprocess piped to another process, writing to a file"
         "1235\n"
         (begin (run (pipe (,echo-command "1234" + 1) ("bc")) (> outfile))
                (read-all "outfile"))))
 (delete-file* "outfile")

 (test "Simple run/string"
       "hi, there\n"
       (run/string (echo "hi, there"))))

(test-exit)