From 97cb9167700dadca89d9cedd7a480c18317281b1 Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@gmail.com>
Date: Sun, 1 May 2016 15:43:59 -0400
Subject: [PATCH] tests: improve recent seq EPIPE test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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.
---
 tests/misc/seq-epipe.sh | 29 ++++++++++++-----------------
 1 file changed, 12 insertions(+), 17 deletions(-)

diff --git a/tests/misc/seq-epipe.sh b/tests/misc/seq-epipe.sh
index 21e9322..9a43068 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
-- 
2.7.0

