From 2c30dff8ea8b17ad5ba9881e35ad1eba9c515f13 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Thu, 26 Nov 2015 22:09:07 -0500
Subject: [PATCH] fix run-coproc/run-heredoc/run-execscript/run-test/ failed

FAIL: run-coproc
update test case:tests/coproc.right, tests/coproc.tests
git://git.sv.gnu.org/bash.git bash-4.4-testing

FAIL: run-heredoc
update test case: tests/heredoc.right tests/heredoc3.sub
git://git.sv.gnu.org/bash.git bash-4.4-testing

FAIL: run-execscript:
the test suite should not be run as root

FAIL: run-test
the test suite should not be run as root

Upstream-Status: Pending

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 tests/coproc.right   |  5 +----
 tests/coproc.tests   | 30 +++++++++++++++++++++++++-----
 tests/heredoc.right  |  5 ++---
 tests/heredoc3.sub   |  3 ++-
 tests/run-execscript |  3 ++-
 tests/run-test       |  3 ++-
 6 files changed, 34 insertions(+), 15 deletions(-)

diff --git a/tests/coproc.right b/tests/coproc.right
index 6d9deaa..94b001c 100644
--- a/tests/coproc.right
+++ b/tests/coproc.right
@@ -1,11 +1,8 @@
-84575
 63 60
 a b c
-84577
 63 60
 flop
-./coproc.tests: line 22: 84577 Terminated              coproc REFLECT { cat -; }
-84579
+coproc.tests: REFLECT: status 143
 63 60
 FOO
 63 60
diff --git a/tests/coproc.tests b/tests/coproc.tests
index 8be3563..d347eb7 100644
--- a/tests/coproc.tests
+++ b/tests/coproc.tests
@@ -1,6 +1,13 @@
+: ${TMPDIR:=/tmp}
+TMPOUT=${TMPDIR}/coproc-wait-$BASHPID
+
 coproc { echo a b c; sleep 2; }
 
-echo $COPROC_PID
+case $COPROC_PID in
+[0-9]*)	;;
+*)	echo COPROC_PID not integer ;;
+esac
+
 echo ${COPROC[@]}
 
 read LINE <&${COPROC[0]}
@@ -10,7 +17,11 @@ wait $COPROC_PID
 
 coproc REFLECT { cat - ; }
 
-echo $REFLECT_PID
+case $REFLECT_PID in
+[0-9]*)	;;
+*)	echo REFLECT_PID not integer ;;
+esac
+
 echo ${REFLECT[@]}
 
 echo flop >&${REFLECT[1]}
@@ -18,12 +29,21 @@ read LINE <&${REFLECT[0]}
 
 echo $LINE
 
-kill $REFLECT_PID
-wait $REFLECT_PID
+{ sleep 1; kill $REFLECT_PID; } &
+wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?"
+grep 'Terminated.*coproc.*REFLECT' < $TMPOUT >/dev/null 2>&1 || {
+	echo "coproc.tests: wait for REFLECT failed" >&2
+}
+rm -f $TMPOUT
+exec 2>&1
 
 coproc xcase -n -u
 
-echo $COPROC_PID
+case $COPROC_PID in
+[0-9]*)	;;
+*)	echo COPROC_PID not integer ;;
+esac
+
 echo ${COPROC[@]}
 
 echo foo >&${COPROC[1]}
diff --git a/tests/heredoc.right b/tests/heredoc.right
index 6abaa1f..8df91c5 100644
--- a/tests/heredoc.right
+++ b/tests/heredoc.right
@@ -76,15 +76,14 @@ ENDEND
 end ENDEND
 hello
 end hello
-x star x
 end x*x
 helloEND
 end helloEND
 hello
 \END
 end hello<NL>\END
-./heredoc3.sub: line 74: warning: here-document at line 72 delimited by end-of-file (wanted `EOF')
-./heredoc3.sub: line 75: syntax error: unexpected end of file
+./heredoc3.sub: line 75: warning: here-document at line 73 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 76: syntax error: unexpected end of file
 comsub here-string
 ./heredoc.tests: line 105: warning: here-document at line 103 delimited by end-of-file (wanted `EOF')
 hi
diff --git a/tests/heredoc3.sub b/tests/heredoc3.sub
index 73a111e..9d3d846 100644
--- a/tests/heredoc3.sub
+++ b/tests/heredoc3.sub
@@ -49,9 +49,10 @@ hello
     END    
 echo end hello
 
-cat <<x*x & touch 'x*x'
+cat <<x*x >/dev/null & touch 'x*x'
 x star x
 x*x
+wait $!
 echo end 'x*x'
 rm 'x*x'
 
diff --git a/tests/run-execscript b/tests/run-execscript
index f97ab21..0d00a1b 100644
--- a/tests/run-execscript
+++ b/tests/run-execscript
@@ -5,5 +5,6 @@ echo "warning: \`/tmp/bash-notthere' not being found or \`/' being a directory"
 echo "warning: produce diff output, please do not consider this a test failure" >&2
 echo "warning: if diff output differing only in the location of the bash" >&2
 echo "warning: binary appears, please do not consider this a test failure" >&2
-${THIS_SH} ./execscript > /tmp/xx 2>&1
+rm -f /tmp/xx
+su -c "${THIS_SH} ./execscript > /tmp/xx 2>&1" test
 diff /tmp/xx exec.right && rm -f /tmp/xx
diff --git a/tests/run-test b/tests/run-test
index b2482c3..2e8f049 100644
--- a/tests/run-test
+++ b/tests/run-test
@@ -1,4 +1,5 @@
 unset GROUPS UID 2>/dev/null
 
-${THIS_SH} ./test.tests >/tmp/xx 2>&1
+rm -f /tmp/xx
+su -c "${THIS_SH} ./test.tests >/tmp/xx 2>&1" test
 diff /tmp/xx test.right && rm -f /tmp/xx
-- 
1.9.1