From: Stefano Lattarini Date: Tue, 8 Nov 2011 17:41:30 +0000 (+0100) Subject: tests: fix spurious failures w.r.t. parallel make and colorization X-Git-Tag: v1.11.1b~12^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9ea65c09108dc08c5d4526fc8b60e1df84bf00a;p=thirdparty%2Fautomake.git 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. --- diff --git a/ChangeLog b/ChangeLog index cc917f011..3cd5deafc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2011-11-08 Stefano Lattarini + + 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 tests: fix spurious failure in 'distcheck-override-infodir.test' diff --git a/tests/color2.test b/tests/color2.test index 306aa040c..2217d8866 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