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>
This commit is contained in:
Paul Eggert 2012-03-06 22:56:39 -08:00
parent a5edd74e69
commit 16126bc430

View File

@ -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])