3 # tests related to SB-EXT:RUN-PROGRAM
5 # This software is part of the SBCL system. See the README file for
8 # While most of SBCL is derived from the CMU CL system, the test
9 # files (like this one) were written from scratch after the fork
12 # This software is in the public domain and is provided with
13 # absolutely no warranty. See the COPYING and CREDITS files for
16 # Make sure that there's at least something in the environment (for
17 # one of the tests below).
18 export SOMETHING_IN_THE_ENVIRONMENT='yes there is'
23 (let ((string (with-output-to-string (stream)
24 (sb-ext:run-program "/bin/echo"
27 (assert (string= string "foo bar
29 ;; Unix environment strings are ordinarily passed with SBCL convention
30 ;; (instead of CMU CL alist-of-keywords convention).
31 (let ((string (with-output-to-string (stream)
32 (sb-ext:run-program "/usr/bin/env" ()
34 :environment '("FEEFIE=foefum")))))
35 (assert (string= string "FEEFIE=foefum
37 ;; The default Unix environment for the subprocess is the same as
38 ;; for the parent process. (I.e., we behave like perl and lots of
39 ;; other programs, but not like CMU CL.)
40 (let ((string (with-output-to-string (stream)
41 (sb-ext:run-program "/usr/bin/env" ()
43 (expected (apply #'concatenate
45 (mapcar (lambda (environ-string)
49 (sb-ext:posix-environ)))))
50 (assert (string= string expected)))
51 ;; That's not just because POSIX-ENVIRON is having a bad hair
52 ;; day and returning NIL, is it?
53 (assert (plusp (length (sb-ext:posix-environ))))
54 ;; success convention for this Lisp program run as part of a larger script
55 (sb-ext:quit :unix-status 52)))
66 # (SB-EXT:RUN-PROGRAM "echo" NIL)
67 # => error in function SB-IMPL::%ENUMERATE-SEARCH-LIST:
68 # Undefined search list: path
70 # (SB-EXT:RUN-PROGRAM "/bin/uname" '("-a") :OUTPUT :STREAM)
71 # doesn't return a STREAM (the way doc string claims)