>From 2c957ea5baa2a9f66e2d0309ce61dc7200d01e7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Sun, 1 Mar 2020 21:49:16 +0000 Subject: [PATCH] tests: use bash in some scripts on avoid false failures * init.cfg (require_bash_as_SHELL_): A new function to replace SHELL for the current test, with bash if available. This is useful on OpenIndiana 11 where /bin/sh was seen to have races in handling of SIGPIPE. * tests/misc/seq-epipe.sh: Use the new function to enforce bash. * tests/misc/env-signal-handler.sh: Likewise. Reported by Bruno Haible --- init.cfg | 9 +++++++++ tests/misc/env-signal-handler.sh | 5 +++++ tests/misc/seq-epipe.sh | 7 ++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/init.cfg b/init.cfg index 2009e294e..8385963f4 100644 --- a/init.cfg +++ b/init.cfg @@ -629,6 +629,15 @@ trap_sigpipe_or_skip_() skip_ 'trapping SIGPIPE is not supported' } +require_bash_as_SHELL_() +{ + if bash --version >/dev/null 2>&1; then + SHELL='bash' + else + skip_ 'bash is required' + fi +} + # Disable the current test if the working directory seems to have # the setgid bit set. skip_if_setgid_() diff --git a/tests/misc/env-signal-handler.sh b/tests/misc/env-signal-handler.sh index fc1bb4e7d..c38177dae 100755 --- a/tests/misc/env-signal-handler.sh +++ b/tests/misc/env-signal-handler.sh @@ -20,6 +20,11 @@ print_ver_ env seq test timeout printf trap_sigpipe_or_skip_ +# /bin/sh has an intermittent failure in ignoring SIGPIPE on OpenIndiana 11 +# so we require bash as discussed at: +# https://lists.gnu.org/archive/html/coreutils/2020-03/msg00004.html +require_bash_as_SHELL_ + # Paraphrasing http://bugs.gnu.org/34488#8: # POSIX requires that sh started with an inherited ignored SIGPIPE must # silently ignore all attempts from within the shell to restore SIGPIPE diff --git a/tests/misc/seq-epipe.sh b/tests/misc/seq-epipe.sh index fe11e61f5..0c42e4308 100755 --- a/tests/misc/seq-epipe.sh +++ b/tests/misc/seq-epipe.sh @@ -20,8 +20,13 @@ print_ver_ seq trap_sigpipe_or_skip_ +# /bin/sh has an intermittent failure in ignoring SIGPIPE on OpenIndiana 11 +# so we require bash as discussed at: +# https://lists.gnu.org/archive/html/coreutils/2020-03/msg00004.html +require_bash_as_SHELL_ + # upon EPIPE with signals ignored, 'seq' should exit with an error. -timeout 10 sh -c \ +timeout 10 $SHELL -c \ 'trap "" PIPE && { seq inf 2>err; echo $? >code; } | head -n1' >out # Exit-code must be 1, indicating 'write error' -- 2.24.1