summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-03-22 21:50:12 +0100
committerLudovic Courtès <ludo@gnu.org>2014-03-22 22:57:09 +0100
commit443eb4e9506026094f5e0dadc3e11d3cf7a86a24 (patch)
tree65aaa990b06517dcb1a1d5a89b2856f7ef78e460 /tests
parentca534666aa18405c96f661fd108686f2ae72c9aa (diff)
downloadgnu-guix-443eb4e9506026094f5e0dadc3e11d3cf7a86a24.tar
gnu-guix-443eb4e9506026094f5e0dadc3e11d3cf7a86a24.tar.gz
utils: 'filtered-port' doesn't leave dangling processes behind.
* guix/utils.scm (filtered-port): Make sure the 'execl' child process always exits, and does (primitive-_exit 1) upon execution failure. Use 'primitive-_exit' in the 'dump-port' child process. * tests/utils.scm ("filtered-port, does not exist"): New test.
Diffstat (limited to 'tests')
-rw-r--r--tests/utils.scm8
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/utils.scm b/tests/utils.scm
index adac5d4381..85daa3db91 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -142,6 +142,14 @@
(append pids1 pids2)))
(equal? (get-bytevector-all decompressed) data)))))
+(test-assert "filtered-port, does not exist"
+ (let* ((file (search-path %load-path "guix.scm"))
+ (input (open-file file "r0b")))
+ (let-values (((port pids)
+ (filtered-port '("/does/not/exist") input)))
+ (any (compose (negate zero?) cdr waitpid)
+ pids))))
+
(false-if-exception (delete-file temp-file))
(test-equal "fcntl-flock wait"
42 ; the child's exit status