]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
tests: port AT_CHECK_ENV to hosts with flaky grep
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 7 Mar 2012 06:56:39 +0000 (22:56 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 7 Mar 2012 06:57:29 +0000 (22:57 -0800)
* 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>

tests/local.at

index cce24f000f444a633237e4c0955542862ca075e7..eb01cc0a86e5b89761beb16e9acac66b1c1139dd 100644 (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])