diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-07-22 17:06:04 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-07-22 17:28:59 +0200 |
commit | 3ffce6240040e51a60fc5a40cbb8d669baa5f7b5 (patch) | |
tree | f8a4e401b3d386f1f9d7024915be7b8a7d0b2413 /t/color-tests.sh | |
parent | 2d5571e7dbfb41eec4a2657c4c076257a320d496 (diff) | |
download | automake-3ffce6240040e51a60fc5a40cbb8d669baa5f7b5.tar.gz |
tests: better name for a couple of tests
* t/color.sh: Rename ...
* t/color-tests.sh: ... like this.
* t/color2.sh: Rename ...
* t/color-tests2.sh: ... like this.
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 't/color-tests.sh')
-rwxr-xr-x | t/color-tests.sh | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/t/color-tests.sh b/t/color-tests.sh new file mode 100755 index 000000000..fafa40376 --- /dev/null +++ b/t/color-tests.sh @@ -0,0 +1,151 @@ +#! /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 <http://www.gnu.org/licenses/>. + +# Test Automake TESTS color output, by forcing it. +# Keep this in sync with the sister test 'color2.test'. + +required='grep-nonprint' +# For gen-testsuite-part: ==> try-with-serial-tests <== +. ./defs || exit 1 + +# 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" + +cat >>configure.ac <<END +AC_OUTPUT +END + +cat >Makefile.am <<'END' +TESTS = $(check_SCRIPTS) +check_SCRIPTS = pass fail skip xpass xfail error +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 + +cat >error <<END +#! /bin/sh +exit 99 +END + +cp fail xfail +cp pass xpass +chmod +x pass fail skip xpass xfail error + +$ACLOCAL +$AUTOCONF +$AUTOMAKE --add-missing + +test_color () +{ + # Not a useless use of cat; see above comments "grep-nonprinting" + # requirement in 'test-init.sh'. + cat stdout | grep "^${grn}PASS${std}: .*pass" + cat stdout | grep "^${red}FAIL${std}: .*fail" + cat stdout | grep "^${blu}SKIP${std}: .*skip" + cat stdout | grep "^${lgn}XFAIL${std}: .*xfail" + cat stdout | grep "^${red}XPASS${std}: .*xpass" + # The old serial testsuite driver doesn't distinguish between failures + # and hard errors. + if test x"$am_serial_tests" = x"yes"; then + cat stdout | grep "^${red}FAIL${std}: .*error" + else + cat stdout | grep "^${mgn}ERROR${std}: .*error" + fi + : +} + +test_no_color () +{ + # With make implementations that, like Solaris make, in case of errors + # print the whole failing recipe on standard output, we should content + # ourselves with a laxer check, to avoid false positives. + # Keep this in sync with lib/am/check.am:$(am__color_tests). + if $FGREP '= Xalways; then' stdout; then + # Extra verbose make, resort to laxer checks. + # Note that we also want to check that the testsuite summary is + # not unduly colorized. + ( + set +e # In case some grepped regex below isn't matched. + # Not a useless use of cat; see above comments "grep-nonprinting" + # requirement in 'test-init.sh'. + cat stdout | grep "TOTAL.*:" + cat stdout | grep "PASS.*:" + cat stdout | grep "FAIL.*:" + cat stdout | grep "SKIP.*:" + cat stdout | grep "XFAIL.*:" + cat stdout | grep "XPASS.*:" + cat stdout | grep "ERROR.*:" + cat stdout | grep 'test.*expected' + cat stdout | grep 'test.*not run' + cat stdout | grep '====' + cat stdout | grep '[Ss]ee .*test-suite\.log' + cat stdout | grep '[Tt]estsuite summary' + ) | grep "$esc" && exit 1 + : For shells with broken 'set -e' + else + cat stdout | grep "$esc" && exit 1 + : For shells with broken 'set -e' + fi +} + +for vpath in false :; do + + if $vpath; then + mkdir build + cd build + srcdir=.. + else + srcdir=. + fi + + $srcdir/configure + + # Forced colorization should take place also with non-ANSI terminals; + # hence the "TERM=dumb" definition. + TERM=dumb AM_COLOR_TESTS=always $MAKE -e check >stdout \ + && { cat stdout; exit 1; } + cat stdout + test_color + + TERM=ansi $MAKE -e check >stdout && { cat stdout; exit 1; } + cat stdout + test_no_color + + $MAKE distclean + cd $srcdir + +done + +: |