test harness: improve catching of usage errors in script 'test-driver'
[platform/upstream/automake.git] / t / test-trs-recover.sh
old mode 100755 (executable)
new mode 100644 (file)
index 3632f61..4585788
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+# Copyright (C) 2011-2013 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
@@ -19,8 +19,7 @@
 # This test is complex and tricky, but that's acceptable since we are
 # testing semantics that are potentially complex and tricky.
 
-am_parallel_tests=yes
-. ./defs || Exit 1
+. test-init.sh
 
 cat >> configure.ac <<END
 AC_OUTPUT
@@ -31,9 +30,8 @@ TESTS = foo.test bar.test baz.test
 TEST_LOG_COMPILER = $(SHELL)
 END
 
-# Creative quoting below to please maintainer-check.
-echo exit '$TEST_STATUS' > foo.test
-echo exit '$TEST_STATUS' > bar.test
+echo 'exit $TEST_STATUS' > foo.test
+echo 'exit $TEST_STATUS' > bar.test
 : > baz.test
 
 TEST_STATUS=0; export TEST_STATUS
@@ -55,25 +53,24 @@ $MAKE check
 rm -f foo.trs bar.trs baz.trs
 $MAKE foo.trs
 test -f foo.trs
-test ! -f bar.trs
-test ! -f baz.trs
+test ! -e bar.trs
+test ! -e baz.trs
 
 : Recreate by hand, several at the same time.
 rm -f foo.trs bar.trs baz.trs
 $MAKE foo.trs bar.trs
 test -f foo.trs
 test -f bar.trs
-test ! -f baz.trs
+test ! -e baz.trs
 
 : Recreate by hand, with a failing test.
 rm -f foo.trs bar.trs
-TEST_STATUS=1 $MAKE bar.trs baz.trs >stdout || { cat stdout; Exit 1; }
-cat stdout
-test ! -f foo.trs
+run_make -O TEST_STATUS=1 bar.trs baz.trs
+test ! -e foo.trs
 test -f bar.trs
 test -f baz.trs
 grep '^FAIL: bar\.test' stdout
-$EGREP '^(baz|foo)\.test' stdout && Exit 1
+$EGREP '^(baz|foo)\.test' stdout && exit 1
 
 : Recreate with a sweeping "make check", and ensure that also up-to-date
 : '.trs' files are remade.
@@ -88,7 +85,7 @@ is_newest baz.trs stamp
 : ensure that also up-to-date '.trs' files are remade -- this time we
 : grep the "make check" output verify that.
 rm -f foo.trs bar.trs
-TEST_STATUS=1 $MAKE check >stdout && { cat stdout; Exit 1; }
+run_make -O -e FAIL TEST_STATUS=1 check
 test -f foo.trs
 test -f bar.trs
 grep '^FAIL: foo\.test' stdout
@@ -97,29 +94,28 @@ grep '^PASS: baz\.test' stdout
 
 : Recreate with a "make check" with redefined TESTS.
 rm -f foo.trs bar.trs baz.trs
-TESTS=foo.test $MAKE -e check
+run_make TESTS=foo.test check
 test -f foo.trs
-test ! -f bar.trs
-test ! -f baz.trs
+test ! -e bar.trs
+test ! -e baz.trs
 
 : Recreate with a "make check" with redefined TEST_LOGS.
 rm -f foo.trs bar.trs baz.trs
-TEST_LOGS=bar.log $MAKE -e check
-test ! -f foo.trs
+run_make TEST_LOGS=bar.log check
+test ! -e foo.trs
 test -f bar.trs
-test ! -f baz.trs
+test ! -e baz.trs
 
 : Interactions with "make recheck" are OK.
 rm -f foo.trs bar.trs baz.log baz.trs
-$MAKE recheck >stdout || { cat stdout; Exit 1; }
-cat stdout
+run_make -O recheck
 test -f foo.trs
 test -f bar.trs
-test ! -f baz.trs
-test ! -f baz.log
+test ! -e baz.trs
+test ! -e baz.log
 grep '^PASS: foo\.test' stdout
 grep '^PASS: bar\.test' stdout
-grep 'baz\.test' stdout && Exit 1
+grep 'baz\.test' stdout && exit 1
 count_test_results total=2 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=0
 
 : Setup for the next check.
@@ -132,11 +128,10 @@ test -f baz.trs
 : '.trs' files are *not* remade.
 update_stamp
 rm -f foo.trs bar.trs test-suite.log
-$MAKE test-suite.log >stdout || { cat stdout; Exit 1; }
-cat stdout
+run_make -O test-suite.log
 grep '^PASS: foo\.test' stdout
 grep '^PASS: bar\.test' stdout
-grep 'baz\.test' stdout && Exit 1
+grep 'baz\.test' stdout && exit 1
 stat *.trs *.log stamp || : # For debugging.
 # Check that make has updated what it needed to, but no more.
 test -f foo.trs
@@ -154,14 +149,13 @@ test -f baz.trs
 rm -f foo.trs
 update_stamp
 touch bar.test
-RECHECK_LOGS= $MAKE -e check >stdout || { cat stdout; Exit 1; }
-cat stdout
+run_make -O RECHECK_LOGS= check
 # Check that make has updated what it needed to, but no more.
 test -f foo.trs
 is_newest bar.trs bar.test
 is_newest stamp baz.trs
 grep '^PASS: foo\.test' stdout
 grep '^PASS: bar\.test' stdout
-grep 'baz\.test' stdout && Exit 1
+grep 'baz\.test' stdout && exit 1
 
 :