Bruno Haible wrote: > Jim Meyering wrote: ... > Thanks, this fixed the failures of this test on several platforms. > > But it introduced a minor problem: spurious output of the test. > > On AIX 6.1: > > ./test-init.sh[42]: There: not found. > PASS: test-init.sh > > On Solaris 10/x86: > > ./test-init.sh: line 66: No: command not found > PASS: test-init.sh > > The reason is some output from 'diff -u out out'. > > On AIX 6.1: > > $ diff -u out out < /dev/null > There are no differences between the files. > $ diff -u out out < /dev/null 2>/dev/null > There are no differences between the files. > $ diff -u out out < /dev/null >/dev/null > > On Solaris 10/x86: > > $ diff -u out out < /dev/null > No differences encountered > $ diff -u out out < /dev/null 2>/dev/null > No differences encountered > $ diff -u out out < /dev/null >/dev/null > > I don't understand the purpose of the $(...). Were you trying to copy > from that line in init.sh? > > if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null`; then > > It uses a variable assignment, not needed here. But without the variable > assignment the output is executed as a command. What we need is just the > return code of the diff -u command. > > This patch fixes it for me: > > --- test-init.sh.bak Fri Jan 6 02:41:26 2012 > +++ test-init.sh Fri Jan 6 02:43:17 2012 > @@ -63,7 +63,7 @@ > sed 's/ .*//;/^@@/d' out > k && mv k out > > # Check the expected output only if compare is using diff -u. > - if $(exec 2>/dev/null; diff -u out out < /dev/null); then > + if (diff -u out out < /dev/null > /dev/null) 2>/dev/null; then
Thank you! How about this? if (diff -u out out < /dev/null) > /dev/null 2>&1; then As usual, since your name is on it, I'll wait for an ACK before pushing it. >From ed38db516c3a5c6698f507f685105a62c762714c Mon Sep 17 00:00:00 2001 From: Bruno Haible <br...@clisp.org> Date: Fri, 6 Jan 2012 09:21:29 +0100 Subject: [PATCH] test-init.sh: correct the test for diff -u * tests/test-init.sh: Also redirect stdout to /dev/null. --- ChangeLog | 5 +++++ tests/test-init.sh | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f1b744b..4a146cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-01-06 Bruno Haible <br...@clisp.org> + + test-init.sh: correct the test for diff -u + * tests/test-init.sh: Also redirect stdout to /dev/null. + 2012-01-05 Bruno Haible <br...@clisp.org> strtoimax: Don't force a replacement on systems where intmax_t is int. diff --git a/tests/test-init.sh b/tests/test-init.sh index 1ed1b79..3368a99 100755 --- a/tests/test-init.sh +++ b/tests/test-init.sh @@ -62,8 +62,8 @@ EOF EOF sed 's/ .*//;/^@@/d' out > k && mv k out - # Check the expected output only if compare is using diff -u. - if $(exec 2>/dev/null; diff -u out out < /dev/null); then + # Compare against expected output only if compare is using diff -u. + if (diff -u out out < /dev/null) > /dev/null 2>&1; then compare exp out || fail=1 fi case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac -- 1.7.8.2.334.gd4e886