From d9ea65c09108dc08c5d4526fc8b60e1df84bf00a Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Tue, 8 Nov 2011 18:41:30 +0100 Subject: [PATCH] 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. --- ChangeLog | 11 +++++++++++ tests/color2.test | 32 +++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 9 deletions(-) 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 -- 2.47.2