summaryrefslogtreecommitdiff
path: root/test-suite
diff options
context:
space:
mode:
authorJosselin Poiret <dev@jpoiret.xyz>2023-05-05 15:39:23 +0200
committerLudovic Courtès <ludo@gnu.org>2023-05-08 16:06:28 +0200
commit36fd2b4920ae926c79b936c29e739e71a6dff2bc (patch)
treecde55553728dc26e06a004faf1d820ae101f51af /test-suite
parentccd7400fdbebca73fc4340ad4ca0248655009f04 (diff)
downloadguile-36fd2b4920ae926c79b936c29e739e71a6dff2bc.tar.gz
Use /dev/null in 'piped-process' if port is not backed by a fdes.HEADmain
In Guile 3.0.9, 'system*' would no longer open /dev/null for file descriptors 0, 1, and 2 when its 'current-input-port', 'current-output-port', or 'current-output-port' is not bound to a file port. This patch reinstates that behavior. Fixes <https://bugs.gnu.org/63024>. * libguile/posix.c (piped_process): Open /dev/null to use as in/out/err if the corresponding port is not backed by a file descriptor. * test-suite/tests/posix.test ("system*")["https://bugs.gnu.org/63024"]: New test. * NEWS: Update. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'test-suite')
-rw-r--r--test-suite/tests/posix.test12
1 files changed, 11 insertions, 1 deletions
diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
index d5cf47cda..18dad8902 100644
--- a/test-suite/tests/posix.test
+++ b/test-suite/tests/posix.test
@@ -374,7 +374,17 @@
(system* "sh" "-c" "echo bong >&2"))))))))
(and (zero? (status:exit-val status))
- (call-with-input-file file get-string-all)))))
+ (call-with-input-file file get-string-all))))
+
+ (pass-if-equal "https://bugs.gnu.org/63024"
+ 0
+ (if (file-exists? "/proc/self/fd/0") ;on GNU/Linux?
+ (parameterize ((current-output-port (%make-void-port "w0")))
+ (system* "guile" "-c"
+ (object->string
+ '(exit (string=? "/dev/null"
+ (readlink "/proc/self/fd/1"))))))
+ (throw 'unresolved))))
;;
;; spawn