Hash :
26f7cb7a
Author :
Date :
2008-10-05T21:24:32
Print captured output before failing. * tests/acloca14.test, tests/acloca17.test, tests/acloca18.test, tests/aclocal.test, tests/acsilent.test, tests/alpha.test, tests/check4.test, tests/color.test, tests/fn99.test, tests/fn99subdir.test, tests/help.test, tests/init.test, tests/lisp8.test, tests/missing3.test, tests/pr220.test, tests/python11.test, tests/python4.test, tests/python5.test, tests/unused.test, tests/version8.test: When Exit is called after a command that has stdout or stderr redirected to a file for later inspection, output the file before failing the test. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
#! /bin/sh
# Copyright (C) 2007, 2008 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 3, 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 <http://www.gnu.org/licenses/>.
# Test Automake TESTS color output.
. ./defs || Exit 1
set -e
TERM=ansi
export TERM
red='[0;31m'
grn='[0;32m'
lgn='[1;32m'
blu='[1;34m'
std='[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) ;;
*) Exit 77 ;;
esac
cat >>configure.in <<END
AC_OUTPUT
END
cat >Makefile.am <<'END'
AUTOMAKE_OPTIONS = color-tests
TESTS = $(check_SCRIPTS)
check_SCRIPTS = pass fail skip xpass xfail
XFAIL_TESTS = xpass xfail
END
cat >pass <<END
#! /bin/sh
exit 0
END
cat >fail <<END
#! /bin/sh
exit 1
END
cat >skip <<END
#! /bin/sh
exit 77
END
cp fail xfail
cp pass xpass
chmod +x pass fail skip xpass xfail
$ACLOCAL
$AUTOMAKE
$AUTOCONF
./configure
test_color ()
{
# Not a useless use of cat; see above comments about grep.
cat stdout | grep ": pass" | $FGREP "$grn"
cat stdout | grep ": fail" | $FGREP "$red"
cat stdout | grep ": xfail" | $FGREP "$lgn"
cat stdout | grep ": xpass" | $FGREP "$red"
cat stdout | grep ": skip" | $FGREP "$blu"
}
test_no_color ()
{
# Not a useless use of cat; see above comments about grep.
cat stdout | grep ": pass" | $FGREP "$grn" && Exit 1
cat stdout | grep ": fail" | $FGREP "$red" && Exit 1
cat stdout | grep ": xfail" | $FGREP "$lgn" && Exit 1
cat stdout | grep ": xpass" | $FGREP "$red" && Exit 1
cat stdout | grep ": skip" | $FGREP "$blu" && Exit 1
:
}
cat >expect-make <<'END'
#! /usr/bin/expect -f
spawn $env(MAKE) -e check
expect eof
END
unset TESTS || :
AM_COLOR_TESTS=always $MAKE -e check >stdout && { cat stdout; Exit 1; }
cat stdout
test_color
MAKE=$MAKE expect -f expect-make >stdout || { cat stdout; Exit 77; }
cat stdout
test_color
AM_COLOR_TESTS=no MAKE=$MAKE expect -f expect-make >stdout || { cat stdout; Exit 77; }
cat stdout
test_no_color
: