changeset 16178:369182e2c607

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.
author Jim Meyering <meyering@redhat.com>
date Thu, 22 Dec 2011 13:12:19 +0100
parents dac34dbfc583
children 6061553f9ece
files ChangeLog tests/init.sh
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -304,11 +304,17 @@
 # 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.