#! /bin/sh
-# Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc.
+# 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
# 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.
+# Test Automake TESTS color output, by forcing it.
+# Keep this in sync with the sister test `color2.test'.
. ./defs || Exit 1
# GNU or BSD 'grep -a' works on files, but is not portable.
case `echo "$std" | grep .` in
$std) ;;
- *) Exit 77 ;;
+ *) echo "$me: grep can't parse nonprinting characters" >&2; Exit 77;;
esac
cat >>configure.in <<END
:
}
-cat >expect-make <<'END'
-#! /usr/bin/expect -f
-spawn $env(MAKE) -e check
-expect eof
-END
-
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
-:
--- /dev/null
+#! /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='\e[0;31m'
+grn='\e[0;32m'
+lgn='\e[1;32m'
+blu='\e[1;34m'
+std='\e[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
+
+# Check that we have a working expect program.
+cat >expect-check <<'END'
+#! /usr/bin/expect -f
+spawn $env(THE_SYSTEM_SHELL) -c :
+expect eof
+END
+THE_SYSTEM_SHELL=/bin/sh expect -f expect-check || {
+ echo "$me: failed to find a working expect program" >&2
+ Exit 77
+}
+
+# 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'
+#! /usr/bin/expect -f
+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