From 95fe4cd6fb2bb70f0e74ed4a6f87ffc44c748c9f Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Thu, 8 Aug 2024 20:10:03 +0200 Subject: [PATCH 6/9] tests: Fix spawn with #:environment on MacOS. MacOS adds __CF_USER_TEXT_ENCODING to every program, in similar way GNU Hurd prepends LD_ORIGIN_PATH (based on the comment). So extend the logic to do similar stripping on MacOS. * test-suite/tests/posix.test ("spawn") ["env with #:environment and #:output"]: Strip trailing __CF_USER_TEXT_ENCODING environment variable when on Darwin. --- test-suite/tests/posix.test | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test index 18dad8902..ac5a3b289 100644 --- a/test-suite/tests/posix.test +++ b/test-suite/tests/posix.test @@ -442,12 +442,23 @@ (close-port (car input+output)) (waitpid pid) - ;; On GNU/Hurd, the exec server prepends 'LD_ORIGIN_PATH' for - ;; every program: . Strip it. - (if (and (string=? "GNU" (utsname:sysname (uname))) - (string-prefix? "LD_ORIGIN_PATH=" str)) - (string-drop str (+ 1 (string-index str #\newline))) - str)))) + (let ((sysname (utsname:sysname (uname)))) + (cond + ((string=? "GNU" sysname) + ;; On GNU/Hurd, the exec server prepends 'LD_ORIGIN_PATH' for + ;; every program: . Strip it. + (if (string-prefix? "LD_ORIGIN_PATH=" str) + (string-drop str (+ 1 (string-index str #\newline))) + str)) + ((string-ci=? "darwin" sysname) + ;; MacOS appends '__CF_USER_TEXT_ENCODING' for every program. Strip + ;; it. + (let ((pos (string-contains str "__CF_USER_TEXT_ENCODING="))) + (if pos + (string-drop-right str (- (string-length str) pos)) + str))) + (else + str)))))) (pass-if-equal "ls /proc/self/fd" "0\n1\n2\n3\n" ;fourth FD is for /proc/self/fd -- 2.45.2