#! /bin/sh # Copyright (C) 2011-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 . # Check parallel-tests features: # - log file creation # - log file removal # - stdout and stderr of a test script go in its log file # - TEST_SUITE_LOG redefinition, at either automake or make time # - VERBOSE environment variable support # Keep in sync with 'tap-log.test'. am_parallel_tests=yes . ./defs || Exit 1 cat >> configure.ac < Makefile.am << 'END' TESTS = pass.test skip.test xfail.test fail.test xpass.test error.test XFAIL_TESTS = xpass.test xfail.test TEST_SUITE_LOG = global.log END # Custom markers, for use in grepping checks. cmarker=::: # comment marker pmarker=%%% # plain maker cat > pass.test <&2 echo "# $cmarker pass $cmarker" >&2 exit 0 END cat > skip.test < xfail.test <&2 echo "# $cmarker xfail $cmarker" >&2 exit 1 END cat > fail.test < xpass.test <&2 echo "# $cmarker xpass $cmarker" >&2 exit 0 END cat > error.test < got (echo "$1" && echo "$eqeq") > exp cat exp cat got diff exp got } # Passed test scripts shouldn't be mentioned in the global log. $EGREP ':.*[^x]pass' my.log && Exit 1 # But failing (expectedly or not) and skipped ones should. have_rst_section 'SKIP: skip' my.log have_rst_section 'FAIL: fail' my.log have_rst_section 'XFAIL: xfail' my.log have_rst_section 'XPASS: xpass' my.log have_rst_section 'ERROR: error' my.log touch error2.log test-suite.log global.log TEST_SUITE_LOG=my.log $MAKE -e mostlyclean ls -l # For debugging. test ! -f my.log test ! -f pass.log test ! -f fail.log test ! -f xfail.log test ! -f xpass.log test ! -f skip.log test ! -f error.log # "make mostlyclean" shouldn't remove unrelated log files. test -f error2.log test -f test-suite.log test -f global.log rm -f *.log VERBOSE=yes $MAKE check >stdout && { cat stdout; Exit 1; } cat stdout cat global.log test ! -f my.log test ! -f test-suite.log # Check that VERBOSE causes the global testsuite log to be # emitted on stdout. out=`cat stdout` log=`cat global.log` case $out in *"$log"*) ;; *) Exit 1;; esac touch error2.log test-suite.log my.log $MAKE clean ls -l # For debugging. test ! -f global.log test ! -f pass.log test ! -f fail.log test ! -f xfail.log test ! -f xpass.log test ! -f skip.log test ! -f error.log # "make clean" shouldn't remove unrelated log files. test -f error2.log test -f test-suite.log test -f my.log rm -f *.log :