diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2012-03-06 22:56:39 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2012-03-06 22:57:29 -0800 |
commit | 16126bc4302f2cb1b4bd06ca7d7da31d2f82156a (patch) | |
tree | 67721ae910115f090adc404e1c3e9ff7f64d3150 | |
parent | a5edd74e69a2b35441a5fa4e99d7c1942084460d (diff) | |
download | autoconf-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.at | 16 |
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]) |