From 443eb4e9506026094f5e0dadc3e11d3cf7a86a24 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 22 Mar 2014 21:50:12 +0100 Subject: 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. --- tests/utils.scm | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tests') 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 @@ (define temp-file (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 -- cgit v1.2.3