]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Ignore stderr when testing parallel autotest (#110351).
authorZack Weinberg <zackw@panix.com>
Sat, 31 Oct 2020 13:57:13 +0000 (09:57 -0400)
committerZack Weinberg <zackw@panix.com>
Sat, 31 Oct 2020 13:57:13 +0000 (09:57 -0400)
Non-release versions of bash (notably 5.1.0(1)-rc1, which was uploaded
to Debian unstable) print internal debugging messages like

    TRACE: pid 411364: bgp_delete: deleting 432074

to the test driver’s stderr while executing the parallel test driver.
This causes spurious failures in the test suite.  Chet Ramsey assures
me these are not a symptom of a bug in either bash or the driver code
(see https://lists.gnu.org/archive/html/bug-autoconf/2020-10/msg00047.html)
so have the test suite ignore them.

This fixes Savannah bug #110351.

* tests/autotest.at: Ignore stderr whenever running a micro-suite in
  parallel mode, to avoid spurious failures due to internal debugging
  messages that may be printed by bash.

tests/autotest.at

index 2892b1dd111b31dbf276c4fe7b4ab4c354d4d397..40acc01341a5add19ada9dc349e66f77a01302be 100644 (file)
@@ -1447,16 +1447,23 @@ AT_CHECK([grep 'non-numeric argument' stderr], [], [ignore])
 
 AT_SKIP_PARALLEL_TESTS
 
+# The parallel test driver makes some shells generate internal
+# debugging messages on stderr (notably bash 5.x in compile-time
+# development mode, see
+# https://lists.gnu.org/archive/html/bug-autoconf/2020-10/msg00047.html)
+# so ignore stderr in all invocations below.
+
 # Ensure that all tests run, and lines are not split.
-AT_CHECK([$CONFIG_SHELL ./micro-suite -j[]AT_PARALLEL_NJOBS], [], [stdout])
+AT_CHECK([$CONFIG_SHELL ./micro-suite -j[]AT_PARALLEL_NJOBS],
+         [], [stdout], [ignore])
 AT_CHECK([grep -c '^.\{53\}ok' stdout], [], [AT_PARALLEL_NTESTS
 ])
 # Running one test with -j should produce correctly formatted output:
-AT_CHECK([$CONFIG_SHELL ./micro-suite -j 3], [], [stdout])
+AT_CHECK([$CONFIG_SHELL ./micro-suite -j 3], [], [stdout], [ignore])
 AT_CHECK([grep -c '^.\{53\}ok' stdout], [], [1
 ])
 # Specifying more jobs than tests should not hang:
-AT_CHECK([$CONFIG_SHELL ./micro-suite -j3 3], [], [stdout])
+AT_CHECK([$CONFIG_SHELL ./micro-suite -j3 3], [], [stdout], [ignore])
 AT_CHECK([grep -c '^.\{53\}ok' stdout], [], [1
 ])
 # Not even with zero tests:
@@ -1477,9 +1484,13 @@ AT_CHECK([grep 'AT_PARALLEL_NTESTS tests' stdout], [], [ignore])
 
 AT_CLEANUP
 
+# stderr is ignored in the next several tests because the parallel
+# driver makes some shells emit internal debugging messages, see
+# https://lists.gnu.org/archive/html/bug-autoconf/2020-10/msg00047.html
+
 AT_CHECK_AT_TEST([parallel truth],
   [AT_CHECK([:], 0, [], [])],
-  [], [], [], [], [AT_SKIP_PARALLEL_TESTS],
+  [], [], [], [ignore], [AT_SKIP_PARALLEL_TESTS],
   [], [-j])
 
 AT_CHECK_AT_TEST([parallel fallacy],
@@ -1489,7 +1500,7 @@ AT_CHECK_AT_TEST([parallel fallacy],
 
 AT_CHECK_AT_TEST([parallel skip],
   [AT_CHECK([echo output; echo irrelevant >&2; exit 77], 0, [mismatch], [])],
-  [], [], [], [], [AT_SKIP_PARALLEL_TESTS],
+  [], [], [], [ignore], [AT_SKIP_PARALLEL_TESTS],
   [AT_CHECK([grep skipped micro-suite.log], [], [ignore])], [-j])
 
 AT_CHECK_AT_TEST([parallel syntax error],
@@ -1500,7 +1511,7 @@ AT_CHECK_AT_TEST([parallel syntax error],
    AT_CLEANUP
    AT_SETUP([another test])
    AT_CHECK([:])],
-  [], [0], [], [], [AT_SKIP_PARALLEL_TESTS],
+  [], [0], [], [ignore], [AT_SKIP_PARALLEL_TESTS],
   [dnl Until we can find a way to avoid catastrophic failure (ash) or
    dnl lack of failure (zsh), skip the rest of this test on such shells.
    echo 'if' > syntax