Hash :
75ae56f0
Author :
Date :
2011-11-12T22:24:36
maintcheck: fix spurious failure in 'color2.test' * tests/color2.test: Avoid creative quoting to avoid a spurious failure of the `sc_tests_Exit_not_exit' maintainer check.
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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
#! /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 <http://www.gnu.org/licenses/>.
# 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='[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") ;;
*) 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 <<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'
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