testsuite harness. This is still the default at the moment, but it
might change in future versions.
+ - The 'recheck' target (provided by the parallel testsuite harness) now
+ depends on the 'all' target. This allows for a better user-experience
+ in test-driven development. See automake bug#11252.
+
- Test scripts that exit with status 99 to signal an "hard error" (e.g.,
and unexpected or internal error, or a failure to set up the test case
scenario) have their outcome reported as an 'ERROR' now. Previous
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"
## Recheck must depend on $(check_SCRIPTS), $(check_PROGRAMS), etc.
-recheck: %CHECK_DEPS%
+## It must also depend on the 'all' target. See automake bug#11252.
+recheck: all %CHECK_DEPS%
AM_RECURSIVE_TARGETS += check recheck
--- /dev/null
+#! /bin/sh
+# Copyright (C) 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/>.
+
+# The parallel-tests 'recheck' target must depend on the 'all' target.
+# See automake bug#11252.
+
+am_parallel_tests=yes
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+all-local:
+ test ! -f status || echo okokok > status
+bin_PROGRAMS = foo
+TESTS = a.test b.test c.test
+END
+
+cat > foo.c << 'END'
+#include <stdio.h>
+int main (void)
+{
+ printf ("failure :-(" "\n");
+ return 1;
+}
+END
+
+cat > a.test << 'END'
+#!/bin/sh
+exit 0
+END
+
+cat > b.test << 'END'
+#!/bin/sh
+grep okokok status
+END
+
+cat > c.test << 'END'
+#!/bin/sh
+./foo
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=3 pass=1 fail=2 skip=0 xfail=0 xpass=0 error=0
+test ! -f status
+
+$sleep
+: > status
+cat > foo.c << 'END'
+#include <stdio.h>
+int main (void)
+{
+ printf ("success :-)" "\n");
+ return 0;
+}
+END
+
+$MAKE recheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=2 pass=2 fail=0 skip=0 xfail=0 xpass=0 error=0
+grep '^PASS: b\.test$' stdout
+grep '^PASS: c\.test$' stdout
+
+$MAKE recheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=0 pass=0 fail=0 skip=0 xfail=0 xpass=0 error=0
+
+: