| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | #! /bin/sh# Copyright (C) 2011-2017 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/>.# TAP support:# - RECHECK_LOGS. test-init.shcat > Makefile.am << 'END'TEST_LOG_COMPILER = catTESTS = foo.test bar.test baz.testbaz.log: zardozEND. tap-setup.sh: > zardozcat > foo.test <<'END'1..2ok 1ok 2ENDcat > bar.test <<'END'1..1not ok 1ENDcat > baz.test <<'END'1..1Bail out!END# Even the tests that are not re-run should contribute to the testsuite# summary when obtained by "make check RECHECK_LOGS=".grep_summary (){  grep '^# TOTAL: *4$' stdout  grep '^# PASS: *2$' stdout  grep '^# XPASS: *0$' stdout  grep '^# FAIL: *1$' stdout  grep '^# XFAIL: *0$' stdout  grep '^# SKIP: *0$' stdout  grep '^# ERROR: *1$' stdout}run_make -e FAIL checktest -f foo.logtest -f bar.logtest -f baz.logrm -f foo.log bar.logrun_make -O -e FAIL check RECHECK_LOGS=test -f foo.logtest -f bar.loggrep '^PASS: foo\.test 1$' stdoutgrep '^PASS: foo\.test 2$' stdoutgrep '^FAIL: bar\.test 1$' stdoutgrep 'baz\.test' stdout && exit 1grep_summary$sleeptouch foo.test# We re-run only a successful test, but the tests that failed in the# previous run should still be taken into account, and cause an overall# failure.run_make -O -e FAIL check RECHECK_LOGS=grep '^PASS: foo\.test 1$' stdoutgrep '^PASS: foo\.test 2$' stdoutgrep 'ba[rz]\.test' stdout && exit 1is_newest foo.log foo.testgrep_summary$sleeptouch zardozrun_make -O -e FAIL check RECHECK_LOGS=grep '^ERROR: baz\.test' stdout$EGREP '(foo|bar)\.test' stdout && exit 1is_newest baz.log zardozgrep_summary# Now, explicitly retry with all test logs already updated, and ensure# that the summary is still displayed.run_make -O -e FAIL check RECHECK_LOGS=$EGREP '(foo|bar|baz)\.test' stdout && exit 1grep_summary# The following should re-run foo.test (and only foo.test), even if its# log file is up-to-date.: > olderrun_make -O -e FAIL check RECHECK_LOGS=foo.loggrep '^PASS: foo\.test 1$' stdoutgrep '^PASS: foo\.test 2$' stdoutgrep 'ba[rz]\.test' stdout && exit 1is_newest foo.log oldergrep_summary:
 |