bug-m4
[Top][All Lists]
Advanced

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

Re: verbose testsuite output contains 1M newlines


From: Eric Blake
Subject: Re: verbose testsuite output contains 1M newlines
Date: Mon, 11 May 2009 19:45:52 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Eric Blake <ebb9 <at> byu.net> writes:

> According to Ralf Wildenhues on 11/23/2008 6:23 AM:

Hi Ralf, and sorry for the long delay,

> >   make check-local TESTSUITEFLAGS=-v
> > 
> > on M4 (git master) produces lots of output on GNU/Linux/bash.  More
> > precisely, the AT_CHECK in builtins.at:470 causes 1024*1024 newlines
> > to be output, and I think there are more instances later.  Can this
> > easily be avoided?
> 
> Hmm, this particular test _has_ to generate more than a megabyte of output
> in order to trigger the code path in m4 being tested (namely, that m4
> starts using temporary files after it collects enough in-memory diversion
> output).  The problem stems from the fact that by default, when you
> specify [stdout] as the third argument to AT_CHECK, autotest emits code
> that both collects the file stdout (good) and copies the resulting file
> into the log (annoying), and when -v is in effect, tees that copy to the
> terminal (bad).  I think the idea behind this decision was that
> testsuite.log should be self-contained, with everything needed to
> reproduce why a test failed.
> 
> The point of specifying [stdout] is that we plan on processing the
> resulting output file later on, so maybe we should quit trying to copy the
> captured file into the logs.  Maybe we should revisit this, and change it
> so that the file is just collected, with nothing output into the log.  Or
> even add a heuristic, where only the first and last 10 lines of the
> resulting file are output into the log.  If the test passed, then the log
> doesn't need megabytes of information; and if the test fails, hopefully
> trimming out the middle of the file from the log still leaves enough
> information in the log to help diagnose what went wrong; the full file
> will still be available in testsuite.dir/nnn/stdout if the log was
> insufficient by itself.

Now that autoconf supports this usage, I've installed the following patch to 
autoconf.  Note that this (once again) means that m4.git master branch requires 
unreleased autotools; oh well.  M4 1.6 is still not out, so it should easily be 
the case that M4 2.0 (the master branch) is not in any rush waiting for the 
autotools to have a stable release in the meantime.


From: Eric Blake <address@hidden>
Date: Mon, 4 May 2009 14:47:25 -0600
Subject: [PATCH] Silence verbose testsuite runs.

* tests/testsuite.at (m4_version_prereq): Bump to recent
autoconf.git version where stdout-nolog was added.
* tests/builtins.at (esyscmd, syscmd): Use new stdout-nolog.
* tests/freeze.at (AT_TEST_FREEZE): Likewise.
* tests/others.at (stderr closed): Likewise.
* HACKING: Mention new requirement.
* bootstrap: Likewise.
Reported by Ralf Wildenhues.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog          |   12 ++++++++++++
 HACKING            |    2 +-
 bootstrap          |    6 +++---
 tests/builtins.at  |    4 ++--
 tests/freeze.at    |    7 ++++---
 tests/others.at    |    2 +-
 tests/testsuite.at |    5 +++--
 7 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7e38a6f..88e64e2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-05-04  Eric Blake  <address@hidden>
+
+       Silence verbose testsuite runs.
+       * tests/testsuite.at (m4_version_prereq): Bump to recent
+       autoconf.git version where stdout-nolog was added.
+       * tests/builtins.at (esyscmd, syscmd): Use new stdout-nolog.
+       * tests/freeze.at (AT_TEST_FREEZE): Likewise.
+       * tests/others.at (stderr closed): Likewise.
+       * HACKING: Mention new requirement.
+       * bootstrap: Likewise.
+       Reported by Ralf Wildenhues.
+
 2009-04-21  Eric Blake  <address@hidden>

        Be more explicit about default quoting characters.
diff --git a/HACKING b/HACKING
index ec22cad..ef04820 100644
--- a/HACKING
+++ b/HACKING
@@ -64,7 +64,7 @@ and is not part of a release distribution.
 * Before you can build from git, you need to bootstrap.  This requires:
   - A pre-installed version of GNU M4 1.4.5 or later, built from a
     package (recommend 1.4.13 or later)
-  - Autoconf 2.62 or later
+  - A git checkout of Autoconf (2.63b-41 or later)
   - Automake 1.10b or later
   - Libtool 2.2 or later
   - Gettext 0.16 or later
diff --git a/bootstrap b/bootstrap
index ae7df5f..628b4bd 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,6 +1,6 @@
 #! /bin/sh

-# bootstrap (GNU M4) version 2009-03-23
+# bootstrap (GNU M4) version 2009-05-04
 # Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software
 # Foundation, Inc.
 # License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
@@ -38,8 +38,8 @@

 # This script bootstraps a git or CVS checkout of GNU M4 by correctly calling
 # out to parts of the GNU Build Platform.  Currently this requires GNU
-# Gettext 0.16 or better, Autoconf 2.62 or better, GNU M4 1.4.5 or better,
-# the latest git Automake 1.10a or better, Libtool 2.2 or better,
+# Gettext 0.16 or better, the latest git Autoconf 2.63b-41 or better,
+# GNU M4 1.4.5 or better, Automake 1.10b or better, Libtool 2.2 or better,
 # and the latest git or CVS checkout of Gnulib.
 # Libtool must be installed; either with the same --prefix as
 # automake, or made accessible to aclocal's search path via
diff --git a/tests/builtins.at b/tests/builtins.at
index 765ebec..4f11927 100644
--- a/tests/builtins.at
+++ b/tests/builtins.at
@@ -485,7 +485,7 @@ world
 esyscmd(`echo hi >&3')divert
 hello
 ]])
-AT_CHECK_M4([3>&-], [0], [stdout], [experr], [in.m4])
+AT_CHECK_M4([3>&-], [0], [stdout-nolog], [experr], [in.m4])
 AT_CHECK([$SED -ne '/./p' stdout], [0], [[hello
 world
 ]])
@@ -1154,7 +1154,7 @@ world
 syscmd(`echo hi >&3')divert
 hello
 ]])
-AT_CHECK_M4([3>&-], [0], [stdout], [experr], [in.m4])
+AT_CHECK_M4([3>&-], [0], [stdout-nolog], [experr], [in.m4])
 AT_CHECK([$SED -ne '/./p' stdout], [0], [[hello
 world
 ]])
diff --git a/tests/freeze.at b/tests/freeze.at
index 338f6f5..c0a3399 100644
--- a/tests/freeze.at
+++ b/tests/freeze.at
@@ -30,18 +30,19 @@ AT_DATA([unfrozen.m4], [$3])

 # First generate the `expout' output by running over the sources before
 # freezing.
-AT_CHECK_M4([frozen.m4 unfrozen.m4], [0], [stdout], [stderr])
+AT_CHECK_M4([frozen.m4 unfrozen.m4], [0], [stdout-nolog], [stderr])

 mv stdout expout
 mv stderr experr

 # Now freeze the first source file.
-AT_CHECK_M4([-F frozen.m4f frozen.m4], [0], [stdout])
+AT_CHECK_M4([-F frozen.m4f frozen.m4], [0], [stdout-nolog])

 mv stdout out1

 # Now rerun the original sequence, but using the frozen file.
-AT_CHECK_M4([-R frozen.m4f unfrozen.m4], [0], [stdout], [experr], [], [ ])
+AT_CHECK_M4([-R frozen.m4f unfrozen.m4],
+            [0], [stdout-nolog], [experr], [], [ ])

 AT_CHECK([cat out1 stdout], [0], [expout])

diff --git a/tests/others.at b/tests/others.at
index e9b7a1b..f95d80f 100644
--- a/tests/others.at
+++ b/tests/others.at
@@ -578,7 +578,7 @@ hello`'dnl(world)
 undivert
 goodbye
 ]])
-AT_CHECK_M4([2>&-], [1], [stdout], [], [in.m4])
+AT_CHECK_M4([2>&-], [1], [stdout-nolog], [], [in.m4])
 AT_CHECK([$SED -ne '/./p' stdout], [0],
 [[hello
 and
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 9372e92..7ba56e5 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -1,7 +1,8 @@
 # Process with autom4te to create an -*- Autotest -*- test suite.

 # Test suite for GNU M4.
-# Copyright (C) 2001, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.

 # This file is part of GNU M4.
 #
@@ -19,7 +20,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.

 # We need a recent Autotest.
-m4_version_prereq([2.62])
+m4_version_prereq([2.63b-41])

 # Default to testing "m4 -b", but allow overrides.
 dnl This uses knowledge of undocumented autotest internals; hopefully
-- 
1.6.2.4








reply via email to

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