#! /bin/sh
# Copyright (C) 2007-2012 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
esc=''
# Escape '[' for grep, below.
red="$esc\[0;31m"
grn="$esc\[0;32m"
lgn="$esc\[1;32m"
blu="$esc\[1;34m"
mgn="$esc\[0;35m"
std="$esc\[m"
# 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") ;;
*) skip_ "grep can't parse nonprinting characters";;
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:
## Creative 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'
eval 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 expect-check Makefile
# Do the tests.
cat >>configure.ac <Makefile.am <<'END'
AUTOMAKE_OPTIONS = color-tests
TESTS = $(check_SCRIPTS)
check_SCRIPTS = pass fail skip xpass xfail error
XFAIL_TESTS = xpass xfail
END
cat >pass <fail <skip <error <expect-make <<'END'
eval spawn $env(MAKE) -e check
expect eof
END
for vpath in false :; do
if $vpath; then
mkdir build
cd build
srcdir=..
else
srcdir=.
fi
$srcdir/configure
TERM=ansi MAKE=$MAKE expect -f $srcdir/expect-make >stdout \
|| { cat stdout; Exit 1; }
cat stdout
test_color
TERM=dumb MAKE=$MAKE expect -f $srcdir/expect-make >stdout \
|| { cat stdout; Exit 1; }
cat stdout
test_no_color
AM_COLOR_TESTS=no MAKE=$MAKE expect -f $srcdir/expect-make >stdout \
|| { cat stdout; Exit 1; }
cat stdout
test_no_color
$MAKE distclean
cd $srcdir
done
: