Stefano Lattarini wrote: > Hi Jim. > > On 12/22/2011 12:44 PM, Jim Meyering wrote: >> FYI, after updating to the latest tests/init.sh, I noticed new >> failures in vc-dwim's "make check". Tracked it down to this: >> >> From ed2ad641686263add14f2081d659da0cc3a76536 Mon Sep 17 00:00:00 2001 >> From: Jim Meyering <meyer...@redhat.com> >> Date: Thu, 22 Dec 2011 12:42:32 +0100 >> Subject: [PATCH] init.sh: avoid unwarranted test failure when using "set -x" >> >> * tests/init.sh (compare): Ignore nonzero exit from compare_dev_null_. >> Otherwise, in a test script that uses "set -x" (like many in vc-dwim) >> a use like "compare exp out" would get evoke an unconditional failure. >> --- >> ChangeLog | 7 +++++++ >> tests/init.sh | 2 +- >> 2 files changed, 8 insertions(+), 1 deletions(-) >> >> diff --git a/ChangeLog b/ChangeLog >> index d52e398..fe6ff6a 100644 >> --- a/ChangeLog >> +++ b/ChangeLog >> @@ -1,3 +1,10 @@ >> +2011-12-22 Jim Meyering <meyer...@redhat.com> >> + >> + init.sh: avoid unwarranted test failure when using "set -x" >> > s/"set -x"/"set -e"/ ?
Oops. Good catch. >> + * tests/init.sh (compare): Ignore nonzero exit from compare_dev_null_. >> + Otherwise, in a test script that uses "set -x" (like many in vc-dwim) >> > Ditto. > >> + a use like "compare exp out" would get evoke an unconditional failure. >> + >> 2011-12-21 Alfred M. Szmidt <a...@gnu.org> >> >> bootstrap: fix it to honor $ACLOCAL_FLAGS once again >> diff --git a/tests/init.sh b/tests/init.sh >> index 19c0cf4..458a448 100644 >> --- a/tests/init.sh >> +++ b/tests/init.sh >> @@ -304,7 +304,7 @@ fi >> # Otherwise, propagate $? to caller: any diffs have already been printed. >> compare () >> { >> - compare_dev_null_ "$@" >> + compare_dev_null_ "$@" || : >> > But this will clobber the value of $? by always setting it to zero, regardless > of what the return status of compare_dev_null_ was, no? Indeed. Thank you! I've written this (and have not tested at all), but still have to write the commit log: diff --git a/tests/init.sh b/tests/init.sh index 458a448..fc4a8c0 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -304,11 +304,16 @@ fi # Otherwise, propagate $? to caller: any diffs have already been printed. compare () { - compare_dev_null_ "$@" || : - case $? in - 0|1) return $?;; - *) compare_ "$@";; - esac + # This is more convoluted than it should be, so that it does not + # provoke failure when used with set -e. + if compare_dev_null_ "$@"; then + return 0 + else + case $? in + 1) return 1;; + *) compare_ "$@";; + esac + fi } # An arbitrary prefix to help distinguish test directories.