Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,28 @@
|
|||
#lang racket/base
|
||||
|
||||
(require racket/system
|
||||
(only-in racket/port with-output-to-string)
|
||||
tests/eli-tester)
|
||||
|
||||
(test
|
||||
;; system runs command and outputs to current output port (which is stdout unless we catch it)
|
||||
(system "ls /etc/motd") => #t
|
||||
;; it throws an error on non-zero exit code (so I need to catch it in this error handler)
|
||||
(system "false") => #f ; nothing printed to stdout/stderr
|
||||
(system "ls /etc/mosh") => #f ; error report printed to stderr
|
||||
;; output can be captured by redirecting stdout/stderr (which are known as current-output-port and
|
||||
;; current-error-port in racket parlance).
|
||||
;; the command printed a \n, so there is a newline captured by the system command
|
||||
(with-output-to-string (λ () (system "ls /etc/motd"))) => "/etc/motd\n"
|
||||
;; no \n is captured when none is captured
|
||||
(with-output-to-string (λ () (system "echo -n foo"))) => "foo"
|
||||
;; error is still not captured (it's still printed to stderr)
|
||||
(with-output-to-string (λ () (system "echo -n foo; echo bar 1>&2"))) => "foo"
|
||||
;; we can capture both with:
|
||||
(let* ((out-str-port (open-output-string))
|
||||
(err-str-port (open-output-string))
|
||||
(system-rv
|
||||
(parameterize ((current-output-port out-str-port) (current-error-port err-str-port))
|
||||
(system "echo -n foo; echo bar 1>&2"))))
|
||||
(values system-rv (get-output-string out-str-port) (get-output-string err-str-port)))
|
||||
=> (values #t "foo" "bar\n"))
|
||||
Loading…
Add table
Add a link
Reference in a new issue