summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2012-03-06 22:56:39 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2012-03-06 22:57:29 -0800
commit16126bc4302f2cb1b4bd06ca7d7da31d2f82156a (patch)
tree67721ae910115f090adc404e1c3e9ff7f64d3150
parenta5edd74e69a2b35441a5fa4e99d7c1942084460d (diff)
downloadautoconf-16126bc4302f2cb1b4bd06ca7d7da31d2f82156a.tar.gz
tests: port AT_CHECK_ENV to hosts with flaky grep
* tests/local.at (AT_CHECK_ENV): Don't assume that if one grep fails, the other will too. It could be that 'grep' is flaky, and fails somewhat at random. This would explain the problems reported for autoconf-2.68b on FreeBSD and MacOS X, for example: <http://lists.gnu.org/archive/html/bug-autoconf/2012-03/msg00032.html> <http://lists.gnu.org/archive/html/bug-autoconf/2012-03/msg00035.html> <http://lists.gnu.org/archive/html/bug-autoconf/2012-03/msg00036.html> <http://lists.gnu.org/archive/html/bug-autoconf/2012-03/msg00044.html>
-rw-r--r--tests/local.at16
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/local.at b/tests/local.at
index cce24f00..eb01cc0a 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -297,9 +297,10 @@ test -f state-ls.after \
# Compare variable space dumps.
if test -f state-env.before && test -f state-env.after; then
set +x
+ grep_failed=false
for act_file in state-env.before state-env.after
do
- $EGREP -v '^(m4_join([|],
+ ($EGREP -v '^(m4_join([|],
[a[cs]_.*],
[(exec_)?prefix|DEFS|CONFIG_STATUS],
[CC|CFLAGS|CPP|GCC|CXX|CXXFLAGS|CXXCPP|GXX|F77|FFLAGS|FLIBS|G77],
@@ -323,12 +324,19 @@ if test -f state-env.before && test -f state-env.after; then
[GREP|[EF]GREP|SED],
[[_@]|.[*#?$].],
[argv|ARGC|LINENO|OLDPWD|PIPESTATUS|RANDOM|SECONDS]))=' \
- $act_file 2>/dev/null |
+ $act_file ||
+ test $? -eq 1 || echo failed >&2
+ ) 2>stderr-$act_file |
# There may be variables spread on several lines; remove latter lines.
- $GREP '^m4_defn([m4_re_word])=' >clean-$act_file
+ $GREP '^m4_defn([m4_re_word])=' >clean-$act_file ||
+ test $? -eq 1 || grep_failed=:
+ if test -s stderr-$act_file; then
+ cat stderr-$act_file >&2
+ grep_failed=:
+ fi
done
$at_traceon
- $at_diff clean-state-env.before clean-state-env.after
+ $grep_failed || $at_diff clean-state-env.before clean-state-env.after
fi
} [#]at_check_env])