Refactor tests on Automake TESTS color output.
authorStefano Lattarini <stefano.lattarini@gmail.com>
Wed, 14 Apr 2010 11:52:51 +0000 (13:52 +0200)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Tue, 20 Apr 2010 05:37:55 +0000 (07:37 +0200)
* tests/color.test: Tests using the expect program moved out to...
* tests/color2.test: ... this new file.
* tests/Makefile.am (TESTS): Extended accordingly.

ChangeLog
tests/Makefile.am
tests/Makefile.in
tests/color.test
tests/color2.test [new file with mode: 0755]

index c491037..32404d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Refactor tests on Automake TESTS color output.
+       * tests/color.test: Tests using the expect program moved out to...
+       * tests/color2.test: ... this new file.
+       * tests/Makefile.am (TESTS): Extended accordingly.
+
 2010-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
 
        Fix typos in comments in test confh5.test
index eb63337..f09e843 100644 (file)
@@ -144,6 +144,7 @@ colon5.test \
 colon6.test \
 colon7.test \
 color.test \
+color2.test \
 comment.test \
 comment2.test \
 comment3.test \
index 58e7554..0c557d4 100644 (file)
@@ -263,6 +263,7 @@ check7-p.test \
 check8-p.test \
 check9-p.test \
 color-p.test \
+color2-p.test \
 comment9-p.test \
 dejagnu-p.test \
 exeext4-p.test \
@@ -381,6 +382,7 @@ colon5.test \
 colon6.test \
 colon7.test \
 color.test \
+color2.test \
 comment.test \
 comment2.test \
 comment3.test \
index 6fa686d..9d86785 100755 (executable)
@@ -1,5 +1,5 @@
 #! /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
@@ -14,7 +14,8 @@
 # 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
 
@@ -34,7 +35,7 @@ std='\e[m'
 # 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
@@ -93,21 +94,6 @@ test_no_color ()
   :
 }
 
-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
-:
diff --git a/tests/color2.test b/tests/color2.test
new file mode 100755 (executable)
index 0000000..eedd37d
--- /dev/null
@@ -0,0 +1,124 @@
+#! /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