Addresses the main part of Automake bug#11287. * contrib/t/parallel-tests-html-recursive.sh: New test. * contrib/t/local.am: Add it.
Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- contrib/t/local.am | 1 + contrib/t/parallel-tests-html-recursive.sh | 163 ++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100755 contrib/t/parallel-tests-html-recursive.sh diff --git a/contrib/t/local.am b/contrib/t/local.am index 0a5f5c1..3859c70 100644 --- a/contrib/t/local.am +++ b/contrib/t/local.am @@ -20,5 +20,6 @@ contrib_testsuite_dir = contrib/t contrib_TESTS = \ $(contrib_testsuite_dir)/parallel-tests-html.sh \ + $(contrib_testsuite_dir)/parallel-tests-html-recursive.sh \ $(contrib_testsuite_dir)/help-multilib.sh \ $(contrib_testsuite_dir)/multilib.sh diff --git a/contrib/t/parallel-tests-html-recursive.sh b/contrib/t/parallel-tests-html-recursive.sh new file mode 100755 index 0000000..12d967e --- /dev/null +++ b/contrib/t/parallel-tests-html-recursive.sh @@ -0,0 +1,163 @@ +#! /bin/sh +# Copyright (C) 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 <http://www.gnu.org/licenses/>. + +# Recursive use of 'check-html'. See Automake bug#11287. + +. ./defs || exit 1 + +# 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' +AM_EXTRA_RECURSIVE_TARGETS([check-html]) +AC_CONFIG_FILES([sub/Makefile sub/more/Makefile]) +AC_OUTPUT +END + +cat > Makefile.am << 'END' +SUBDIRS = sub +EXTRA_DIST = $(TESTS) +TEST_SUITE_LOG = mylog.log +TESTS = foo.test bar.sh mu +XFAIL_TESTS = bar.sh +check_SCRIPTS = bla +bla: + echo '#!/bin/sh' > $@-t + echo 'echo Blah Blah Blah' >> $@-t + chmod a+x,a-w $@-t + mv -f $@-t $@ +CLEANFILES = bla +include $(srcdir)/check-html.am +END + +mkdir sub +echo SUBDIRS = more > sub/Makefile.am + +mkdir sub/more +cat > sub/more/Makefile.am << 'END' +include $(top_srcdir)/check-html.am +TEST_EXTENSIONS = .test .sh +TESTS = sh.sh test.test +LOG_COMPILER = true +test.log: sh.log +nodist_check_DATA = x.txt +$(nodist_check_DATA): + echo $@ > $@ +CLEANFILES = $(nodist_check_DATA) +EXTRA_DIST = $(TESTS) +END + +cat > foo.test <<'END' +#! /bin/sh +./bla +exit 77 +END + +cat > bar.sh <<'END' +#! /bin/sh +echo "this is $0" +exit 1 +END + +cat > mu <<'END' +#! /bin/sh +set -x +test -f sub/more/test.log +test -f sub/more/sh.log +END + +cat > sub/more/test.test << 'END' +#!/bin/sh +echo "this is $0" +set -x +test -f sh.log +test -f x.txt +exit 77 +END + +cat > sub/more/sh.sh << 'END' +#!/bin/sh +set -x +test ! -f test.log +test -f x.txt +END + + +cat > sub/more/mu << 'END' +#!/bin/sh +exit 99 +END + +chmod a+x foo.test bar.sh mu sub/more/test.test sub/more/sh.sh + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +./configure + +$MAKE check-html +grep 'Blah Blah Blah' mylog.html +grep 'this is .*bar\.sh' mylog.html +grep 'this is .*test\.test' sub/more/test-suite.html +# check-html should cause check_SCRIPTS and check_DATA to be created. +test -f bla +test -f sub/more/x.txt + +# "make clean" should remove HTML files. +$MAKE clean +test ! -e mylog.html +test ! -e sub/more/test-suite.html +test ! -e bla +test ! -e sub/more/x.txt + +# Create HTML output for individual tests. + +$MAKE bla +$MAKE foo.html bar.sh.html +grep 'Blah Blah Blah' foo.html +grep 'this is .*bar\.sh' bar.sh.html +test ! -e mu.hml + +ocwd=$(pwd) || fatal_ "getting current workind directory" +( cd sub/more \ + && $MAKE sh.html \ + && test -f sh.html \ + && test ! -e test.html \ + && $MAKE test.html \ + && grep 'this is .*test\.test' test.html) || exit 1 + +# HTML output removed by mostlyclean. +$MAKE check-html +test -f mylog.html +test -f sub/more/test-suite.html +$MAKE mostlyclean +find . -name '*.html' | grep . && exit 1 + +$MAKE distcheck + +: -- 1.7.9.5