bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] tests/init.sh: port Alpine fix to AIX 7.1


From: Paul Eggert
Subject: [PATCH] tests/init.sh: port Alpine fix to AIX 7.1
Date: Sat, 24 Sep 2016 20:17:29 -0700

* tests/init.sh (compare_): When attempting to use diff -U3,
prefer diff -u to -U3 to -c to plain diff.  Do not insist on
diff -u not outputting a space after leading '+', as the users
of 'compare' should not be that picky about its output format.
In the AIX 7.1 case, return with diff exit status (or with 2 if
trouble), instead of some random nonzero exit status.
* tests/test-init.sh (test_compare): Remove space after leading
'+', so that AIX 7.1 'diff' passes the test.
---
 ChangeLog          | 12 ++++++++++++
 tests/init.sh      | 52 +++++++++++++---------------------------------------
 tests/test-init.sh |  3 ++-
 3 files changed, 27 insertions(+), 40 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cd12f94..b006ef0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2016-09-24  Paul Eggert  <address@hidden>
+
+       tests/init.sh: port Alpine fix to AIX 7.1
+       * tests/init.sh (compare_): When attempting to use diff -U3,
+       prefer diff -u to -U3 to -c to plain diff.  Do not insist on
+       diff -u not outputting a space after leading '+', as the users
+       of 'compare' should not be that picky about its output format.
+       In the AIX 7.1 case, return with diff exit status (or with 2 if
+       trouble), instead of some random nonzero exit status.
+       * tests/test-init.sh (test_compare): Remove space after leading
+       '+', so that AIX 7.1 'diff' passes the test.
+
 2016-09-22  Paul Eggert  <address@hidden>
 
        nl_langinfo: pacify GCC
diff --git a/tests/init.sh b/tests/init.sh
index 09b0739..da743c2 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -295,50 +295,24 @@ compare_dev_null_ ()
   return 2
 }
 
-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
-    compare_ ()
-    {
-      if diff -u "$@" > diff.out; then
-        # No differences were found, but Solaris 'diff' produces output
-        # "No differences encountered". Hide this output.
-        rm -f diff.out
-        true
-      else
-        cat diff.out
-        rm -f diff.out
-        false
-      fi
-    }
-  fi
-elif
-  for diff_opt_ in -U3 -c '' no; do
-    test "$diff_opt_" = no && break
-    diff_out_=`exec 2>/dev/null; diff $diff_opt_ "$0" "$0" </dev/null` && break
-  done
-  test "$diff_opt_" != no
-then
+for diff_opt_ in -u -U3 -c '' no; do
+  test "$diff_opt_" != no &&
+    diff_out_=`exec 2>/dev/null; diff $diff_opt_ "$0" "$0" < /dev/null` &&
+    break
+done
+if test "$diff_opt_" != no; then
   if test -z "$diff_out_"; then
     compare_ () { diff $diff_opt_ "$@"; }
   else
     compare_ ()
     {
-      if diff $diff_opt_ "$@" > diff.out; then
-        # No differences were found, but AIX and HP-UX 'diff' produce output
-        # "No differences encountered" or "There are no differences between the
-        # files.". Hide this output.
-        rm -f diff.out
-        true
-      else
-        cat diff.out
-        rm -f diff.out
-        false
-      fi
+      # If no differences were found, AIX and HP-UX 'diff' produce output
+      # like "No differences encountered".  Hide this output.
+      diff $diff_opt_ "$@" > diff.out
+      diff_status_=$?
+      test $diff_status_ -eq 0 || cat diff.out || diff_status_=2
+      rm -f diff.out || diff_status_=2
+      return $diff_status_
     }
   fi
 elif cmp -s /dev/null /dev/null 2>/dev/null; then
diff --git a/tests/test-init.sh b/tests/test-init.sh
index 1dd05f4..a627859 100755
--- a/tests/test-init.sh
+++ b/tests/test-init.sh
@@ -57,7 +57,8 @@ EOF
     # 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
+    # Also, remove space after leading '+', since AIX 7.1 diff outputs a space.
+    sed 's/    .*//;/^@@/d;s/^+ /+/' out > k && mv k out
     cat <<\EOF > exp
 --- empty
 +++ in
-- 
2.7.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]