Bruno Haible wrote: > The recently added test-init.sh test fails on AIX 7.1: > > --- exp 2012-01-28 18:51:15.000000000 +0000 > +++ out 2012-01-28 18:51:15.000000000 +0000 > @@ -1,3 +1,3 @@ > --- empty > +++ in > - +xyz > + + xyz > FAIL: test-init.sh ...
Hi Bruno, Thanks for the analysis and patch! That looks fine and passed my test on Fedora 16. Only one question: > --- tests/init.sh.orig Sat Jan 28 20:34:28 2012 > +++ tests/init.sh Sat Jan 28 20:21:12 2012 > @@ -255,7 +255,10 @@ > return 2 > } > > -if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null`; then > +if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null` \ > + && diff -u Makefile "$0" 2>/dev/null | grep '^.#!' >/dev/null; then Why use "." rather than a literal "+" there? Are you worried that Makefile will contain a line matching /^#!/ near the top, which would lead to a regular diff containing a space rather than "+" there? That's fine to push either way. > + # diff accepts the -u option and does not (like AIX 7 'diff') produce an > + # extra space on column 1 of every content line. > if test -z "$diff_out_"; then > compare_ () { diff -u "$@"; } > else > --- tests/test-init.sh.orig Sat Jan 28 20:34:28 2012 > +++ tests/test-init.sh Sat Jan 28 20:34:02 2012 > @@ -50,20 +50,19 @@ > case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; > esac > > compare empty in >out 2>err && fail=1 > - # Remove the TAB-date suffix on each --- and +++ line, > - # for both the expected and the actual output files. > - # Also remove the @@ line, since Solaris 5.10 and GNU diff formats differ: > - # -@@ -0,0 +1 @@ > - # +@@ -1,0 +1,1 @@ > - cat <<\EOF > exp > + # Compare against expected output only if compare is using diff -u. > + if grep @ out >/dev/null; then Good idea. > + # Remove the TAB-date suffix on each --- and +++ line, > + # for both the expected and the actual output files. > + # Also remove the @@ line, since Solaris 5.10 and GNU diff formats > differ: > + # -@@ -0,0 +1 @@ > + # +@@ -1,0 +1,1 @@ > + sed 's/ .*//;/^@@/d' out > k && mv k out > + cat <<\EOF > exp > --- empty > +++ in > +xyz > EOF > - sed 's/ .*//;/^@@/d' out > k && mv k out > - > - # 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