blob: 7a517b1bc620859d4b3dca4b4fd8926ed4fb775f [file] [log] [blame]
#! /bin/sh
# Copyright (C) 2009-2018 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 <https://www.gnu.org/licenses/>.
# Check parallel-tests features:
# - check-html
# - recheck-html
. test-init.sh
# Try the variants that are tried in check-html.am.
while :; do
for r2h in $RST2HTML rst2html rst2html.py; do
echo "$me: running $r2h --version"
$r2h --version && break 2
: For shells with busted 'set -e'.
done
skip_all_ "no proper rst2html program found"
done
unset r2h
cp "$am_top_srcdir"/contrib/check-html.am . \
|| fatal_ "cannot fetch 'check-html.am' from contrib"
cat >> configure.ac << 'END'
AC_OUTPUT
END
cat > Makefile.am << 'END'
TEST_SUITE_LOG = mylog.log
TESTS = foo.test bar.test baz.test
check_SCRIPTS = bla
bla:
echo bla > $@
CLEANFILES = bla
include $(srcdir)/check-html.am
END
cat > foo.test <<'END'
#! /bin/sh
echo "this is $0"
test -f bla || exit 1
exit 0
END
cat > bar.test <<'END'
#! /bin/sh
echo "this is $0"
exit 99
END
cat > baz.test <<'END'
#! /bin/sh
echo "this is $0"
exit 1
END
chmod a+x foo.test bar.test baz.test
$ACLOCAL
$AUTOCONF
$AUTOMAKE -a
./configure
$MAKE check-html && exit 1
test -f mylog.html
# check-html should cause check_SCRIPTS to be created.
test -f bla
# "make clean" should remove HTML files.
$MAKE clean
test ! -e mylog.html
test ! -e bla
# Always create the HTML output, even if there were no failures.
rm -f mylog.html
run_make TESTS=foo.test check-html
test -f mylog.html
# Create summarizing HTML output also with recheck-html.
rm -f mylog.html
run_make TESTS=foo.test recheck-html
test -f mylog.html
# Create HTML output for an individual test.
$MAKE foo.html
grep 'this is .*foo\.test' foo.html
test ! -e bar.html
test ! -e baz.html
# Create HTML output for individual tests. Since the pre-existing log
# files are expected to be used for the HTML conversion, this should
# go smoothly even for failed tests.
$MAKE bar.html baz.html
grep 'this is .*bar\.test' bar.html
grep 'this is .*baz\.test' baz.html
# HTML output removed by mostlyclean.
$MAKE mostlyclean
test ! -e foo.html
test ! -e bar.html
test ! -e baz.html
test ! -e mylog.html
# check-html and recheck-html should cause check_SCRIPTS to be created,
# and recheck-html should rerun no tests if check has not been run.
$MAKE clean
test ! -e mylog.html
run_make TEST_LOGS=foo.log check-html
test -f bla
test -f foo.log
test ! -e bar.log
test ! -e baz.log
test -f mylog.html
$MAKE clean
run_make TESTS=foo.test recheck-html
test -f bla
test ! -e foo.log
test -f mylog.html
$MAKE clean
$MAKE recheck-html
test -f bla
test ! -e foo.log
test ! -e bar.log
test ! -e baz.log
test -f mylog.html
: