Jim Meyering wrote: > My test expected diff -u output. > compare may generate diff -c output or even cmp output. > > This should fix it: > +2012-01-05 Jim Meyering <meyer...@redhat.com> > + > + test-init.sh: avoid failure on HP-UX 11.00 > + * tests/test-init.sh: Skip "diff -u"-comparing step when compare > + resolves to diff -c or cmp. Reported by Bruno Haible. > + > 2012-01-04 Jim Meyering <meyer...@redhat.com> > > test-init.sh: accommodate Solaris 5.10's different diff -u output > diff --git a/tests/test-init.sh b/tests/test-init.sh > index ee1c798..1ed1b79 100755 > --- a/tests/test-init.sh > +++ b/tests/test-init.sh > @@ -61,7 +61,11 @@ EOF > +xyz > EOF > sed 's/ .*//;/^@@/d' out > k && mv k out > - compare exp out || fail=1 > + > + # Check the expected output only if compare is using diff -u. > + if $(exec 2>/dev/null; diff -u out out < /dev/null); then > + compare exp out || fail=1 > + fi > case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; > esac > }
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 compare exp out || fail=1 fi case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac Please apply it if you agree. Bruno