#! /bin/sh # Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Test Automake TESTS color output, using the expect(1) program. # Keep this in sync with the sister test `color.test'. . ./defs || Exit 1 set -e TERM=ansi export TERM red='' grn='' lgn='' blu='' std='' # Check that grep can parse nonprinting characters. # BSD 'grep' works from a pipe, but not a seekable file. # GNU or BSD 'grep -a' works on files, but is not portable. case `echo "$std" | grep .` in "$std") ;; *) echo "$me: grep can't parse nonprinting characters" >&2; Exit 77;; esac # This test requires a working a working `expect' program. # Creative quoting required to avoid spurious maintainer-check failure. (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 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 >>configure.in <Makefile.am <<'END' AUTOMAKE_OPTIONS = color-tests TESTS = $(check_SCRIPTS) check_SCRIPTS = pass fail skip xpass xfail XFAIL_TESTS = xpass xfail END cat >pass <fail <skip <expect-make <<'END' spawn $env(MAKE) -e check expect eof END MAKE=$MAKE expect -f expect-make >stdout \ || { cat stdout; Exit 1; } cat stdout test_color AM_COLOR_TESTS=no MAKE=$MAKE expect -f expect-make >stdout \ || { cat stdout; Exit 1; } cat stdout test_no_color