+2011-11-08 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ 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 <stefano.lattarini@gmail.com>
tests: fix spurious failure in 'distcheck-override-infodir.test'
*) 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.
}
cat >expect-make <<'END'
-#! /usr/bin/expect -f
spawn $env(MAKE) -e check
expect eof
END