autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] tests: port AT_CHECK_ENV to hosts with flaky grep


From: Paul Eggert
Subject: [PATCH] tests: port AT_CHECK_ENV to hosts with flaky grep
Date: Tue, 06 Mar 2012 22:58:46 -0800
User-agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2

* 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 |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/tests/local.at b/tests/local.at
index cce24f0..eb01cc0 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],
       address@hidden|.[*#?$].],
       [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])
 
-- 
1.7.6.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]