automake-patches
[Top][All Lists]
Advanced

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

[FYI] {maint} tests: fix spurious failures w.r.t. parallel make and colo


From: Stefano Lattarini
Subject: [FYI] {maint} tests: fix spurious failures w.r.t. parallel make and colorization
Date: Tue, 8 Nov 2011 19:55:47 +0100

* tests/color2.test: Skip the test if the $MAKE program fails to
consider the standard output as a tty when spawned by `expect'.
This is required for make implementations, like FreeBSD make and
Solaris dmake, that redirect the output of recipes to temporary
files or pipes when run in parallel mode.  Since we are at it,
simplify the detection of a working `expect' program, and throw
in other minor simplifications.
---
 ChangeLog         |   11 +++++++++++
 tests/color2.test |   32 +++++++++++++++++++++++---------
 2 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cc917f0..3cd5dea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2011-11-08  Stefano Lattarini  <address@hidden>
+
+       tests: fix spurious failures w.r.t. parallel make and colorization
+       * tests/color2.test: Skip the test if the $MAKE program fails to
+       consider the standard output as a tty when spawned by `expect'.
+       This is required for make implementations, like FreeBSD make and
+       Solaris dmake, that redirect the output of recipes to temporary
+       files or pipes when run in parallel mode.  Since we are at it,
+       simplify the detection of a working `expect' program, and throw
+       in other minor simplifications.
+
 2011-11-07  Stefano Lattarini  <address@hidden>
 
        tests: fix spurious failure in 'distcheck-override-infodir.test'
diff --git a/tests/color2.test b/tests/color2.test
index 306aa04..2217d88 100755
--- a/tests/color2.test
+++ b/tests/color2.test
@@ -38,16 +38,31 @@ case `echo "$std" | grep .` in
   *) echo "$me: grep can't parse nonprinting characters" >&2; Exit 77;;
 esac
 
-# Check that we have a working expect program.
-cat >expect-check <<'END'
-#! /usr/bin/expect -f
-spawn $env(THE_SYSTEM_SHELL) -c :
-expect eof
+# This test requires a working a working `expect' program.
+(set +e; expect -c "exit 77"; test $? -eq 77) \
+  || skip_ "requires a working expect program"
+
+# Also, if the $MAKE program fails to consider the standard output as a
+# tty (this happens with e.g., BSD make and Solaris dmake when they're
+# run in parallel mode; see the autoconf manual), there is little point
+# in proceeding.
+cat > Makefile <<'END'
+all:
+## Creaive quoting in the `echo' below to avoid risk of spurious output
+## matches by `expect', below.
+       @test -t 1 && echo "stdout" "is" "a" "tty"
 END
-THE_SYSTEM_SHELL=/bin/sh expect -f expect-check || {
-    echo "$me: failed to find a working expect program" >&2
-    Exit 77
+cat > expect-check <<'END'
+spawn $env(MAKE)
+expect {
+  "stdout is a tty" { exit 0 }
+  default { exit 1 }
 }
+exit 1
+END
+MAKE=$MAKE expect -f expect-check \
+  || skip_ "make spawned by expect should have a tty stdout"
+rm -f check Makefile
 
 # Do the tests.
 
@@ -108,7 +123,6 @@ test_no_color ()
 }
 
 cat >expect-make <<'END'
-#! /usr/bin/expect -f
 spawn $env(MAKE) -e check
 expect eof
 END
-- 
1.7.2.3




reply via email to

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