summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Volf <~@wolfsden.cz>2024-08-10 00:54:33 +0200
committerLudovic Courtès <ludo@gnu.org>2024-10-20 21:22:23 +0200
commit58a722d8837c25397820b41bcfa18bc931fa8440 (patch)
tree83f5c65b70611bb69a8a054e838bc969988e01f8
parent1746dbbe4d134073087f9ba8220e60a3a02ec8c0 (diff)
downloadguile-58a722d8837c25397820b41bcfa18bc931fa8440.tar.gz
tests: Fix spawn if file not found with Gnulib.
On Darwin posix_spawnp is not considered secured and therefore we fallback to Gnulib's version. That one however does not return ENOENT when the file does not exist, but PID of the child process. This seems to be allowed by the standard. * test-suite/tests/posix.test (skip-on-darwin): New procedure. ("spawn")["file not file"]: Skip on Darwin. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--test-suite/tests/posix.test8
1 files changed, 8 insertions, 0 deletions
diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
index ac5a3b289..310f3ac7c 100644
--- a/test-suite/tests/posix.test
+++ b/test-suite/tests/posix.test
@@ -22,6 +22,9 @@
#:use-module (test-suite lib)
#:use-module ((rnrs io ports) #:select (get-string-all)))
+(define (skip-on-darwin)
+ (when (string-ci=? "darwin" (utsname:sysname (uname)))
+ (throw 'untested)))
;; FIXME: The following exec tests are disabled since on an i386 debian with
;; glibc 2.3.2 they seem to interact badly with threads.test, the latter
@@ -475,6 +478,11 @@
(pass-if-equal "file not found"
ENOENT
+ ;; Actually "skip-if-posix_spawn-replaced" would be preferred, since the
+ ;; behavior below is not implemented in gnulib, but I do not know how to
+ ;; write such test. However due to posix_spawnp being buggy on macOS it is
+ ;; always replaced, so whatever.
+ (skip-on-darwin)
(catch 'system-error
(lambda ()
(spawn "this-does-not-exist" '("nope")