[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: test-init.sh failure on AIX 7.1
From: |
Jim Meyering |
Subject: |
Re: test-init.sh failure on AIX 7.1 |
Date: |
Sat, 28 Jan 2012 21:58:35 +0100 |
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