init.sh: correct previous change
authorJim Meyering <meyering@redhat.com>
Thu, 22 Dec 2011 12:12:19 +0000 (13:12 +0100)
committerJim Meyering <meyering@redhat.com>
Thu, 22 Dec 2011 12:12:19 +0000 (13:12 +0100)
* tests/init.sh (compare): My previous change was wrong.
Don't clobber "$?".  Spotted by Stefano Lattarini and Pádraig Brady.

ChangeLog
tests/init.sh

index df1f5b5..7ca5e7b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-12-22  Jim Meyering  <meyering@redhat.com>
 
+       init.sh: correct previous change
+       * tests/init.sh (compare): My previous change was wrong.
+       Don't clobber "$?".  Spotted by Stefano Lattarini and Pádraig Brady.
+
        init.sh: avoid unwarranted test failure when using "set -e"
        * tests/init.sh (compare): Ignore nonzero exit from compare_dev_null_.
        Otherwise, in a test script that uses "set -e" (like many in vc-dwim)
index 458a448..1e1f0e3 100644 (file)
@@ -304,11 +304,17 @@ fi
 # Otherwise, propagate $? to caller: any diffs have already been printed.
 compare ()
 {
-  compare_dev_null_ "$@" || :
-  case $? in
-    0|1) return $?;;
-    *) compare_ "$@";;
-  esac
+  # This looks like it can be factored to use a simple "case $?"
+  # after unchecked compare_dev_null_ invocation, but that would
+  # fail in a "set -e" environment.
+  if compare_dev_null_ "$@"; then
+    return 0
+  else
+    case $? in
+      1) return 1;;
+      *) compare_ "$@";;
+    esac
+  fi
 }
 
 # An arbitrary prefix to help distinguish test directories.