summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAssaf Gordon <assafgordon@gmail.com>2016-05-01 15:43:59 -0400
committerAssaf Gordon <assafgordon@gmail.com>2016-07-02 18:08:33 -0400
commit383e4b2ce589f6ecf0a375e94ab56fab6eff88f1 (patch)
treeb84797dd0364950e851129236aac8f1ced582229
parentdfae7822006074d145dd7f2e4c88a9419604f9d9 (diff)
downloadcoreutils-383e4b2ce589f6ecf0a375e94ab56fab6eff88f1.tar.xz
tests: improve recent seq EPIPE test
Follow-up to commit c92585b1: improve epipe test script, with suggestions from Bernhard Voelker and Pádraig Brady. see: http://lists.gnu.org/archive/html/coreutils/2016-04/msg00067.html . * tests/misc/seq-epipe.sh: Avoid too many subshells, stricter validation of errors and output from seq, skip if trapping SIGPIPE is not supported.
-rwxr-xr-xtests/misc/seq-epipe.sh29
1 files changed, 12 insertions, 17 deletions
diff --git a/tests/misc/seq-epipe.sh b/tests/misc/seq-epipe.sh
index 21e932293..9a43068bb 100755
--- a/tests/misc/seq-epipe.sh
+++ b/tests/misc/seq-epipe.sh
@@ -19,28 +19,23 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ seq
+(trap '' PIPE && yes | :) 2>&1 | grep -qF 'Broken pipe' ||
+ skip_ 'trapping SIGPIPE is not supported'
+
# upon EPIPE with signals ignored, 'seq' should exit with an error.
-(trap '' PIPE;
- timeout 10 sh -c '( (seq inf 2>err ; echo $?>code) | head -n1)'>/dev/null)
+timeout 10 sh -c \
+ 'trap "" PIPE && { seq inf 2>err; echo $? >code; } | head -n1' >out
# Exit-code must be 1, indicating 'write error'
-cat << \EOF > exp || framework_failure_
-1
-EOF
-if test -e code ; then
- compare exp code || fail=1
-else
- # 'exitcode' file was not created
- warn_ "missing exit code file (seq failed to detect EPIPE?)"
- fail=1
-fi
+echo 1 > exp || framework_failure_
+compare exp out || fail=1
+compare exp code || fail=1
# The error message must begin with "standard output:"
# (but don't hard-code the strerror text)
-compare_dev_null_ /dev/null err
-if ! grep -qE '^seq: standard output: .+$' err ; then
- warn_ "seq emitted incorrect error on EPIPE"
- fail=1
-fi
+grep '^seq: standard output: ' err \
+ || { warn_ "seq emitted incorrect error on EPIPE"; \
+ cat err;\
+ fail=1; }
Exit $fail