Hi Jim, 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 The reason is that these commands $ touch empty $ echo xyz > in $ diff -u empty in --- empty 2012-01-28 19:00:16.000000000 +0000 +++ in 2012-01-28 19:00:20.000000000 +0000 @@ -0 +1 @@ + xyz produce a unified diff where a space is inserted in column 1 (like in context diffs). $ type diff diff is hashed (/bin/diff) Find attached a possible fix. (Careful: It contains literal tabs.) OK to apply? Bruno
2012-01-28 Bruno Haible <br...@clisp.org> test-framework-sh: Fix test failure with AIX 7.1 diff. * tests/init.sh (compare_): Don't use 'diff -u' if it inserts a space in column 1, like 'diff -c' does. * tests/test-init.sh (test_compare): Don't repeat the test from init.sh whether 'diff -u' is used. Instead, test whether the output contains some '@' character. --- 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 + # 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 + # 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