#! /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 . # 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.sh'. . test-init.sh 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 run_make TEST_SUITE_LOG=my.log mostlyclean ls -l # For debugging. test ! -e my.log test ! -e pass.log test ! -e fail.log test ! -e xfail.log test ! -e xpass.log test ! -e skip.log test ! -e 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 run_make -O -e FAIL check VERBOSE=yes cat global.log test ! -e my.log test ! -e 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 ! -e global.log test ! -e pass.log test ! -e fail.log test ! -e xfail.log test ! -e xpass.log test ! -e skip.log test ! -e 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 :