From: Stefano Lattarini Date: Tue, 11 Oct 2011 11:42:09 +0000 (+0200) Subject: coverage: conditional contents in LOG_DRIVER variables X-Git-Tag: ng-0.5a~89^2~27^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6091c2d48557906582cd06eadf8ad08775e6392;p=thirdparty%2Fautomake.git coverage: conditional contents in LOG_DRIVER variables * tests/test-driver-cond.test: New test. * tests/Makefile.am (TESTS): Add it. --- diff --git a/ChangeLog b/ChangeLog index 2dd019a9f..9632de5c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-10-11 Stefano Lattarini + + coverage: conditional contents in LOG_DRIVER variables + * tests/test-driver-cond.test: New test. + * tests/Makefile.am (TESTS): Add it. + 2011-10-11 Stefano Lattarini coverage: LOG_DRIVER variables can be defined through AC_SUBST diff --git a/tests/Makefile.am b/tests/Makefile.am index 9ce328e4d..b97d84ae3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -788,6 +788,7 @@ test-driver-trs-suffix-registered.test \ test-driver-fail.test \ test-driver-is-distributed.test \ test-driver-acsubst.test \ +test-driver-cond.test \ test-harness-vpath-rewrite.test \ test-log.test \ test-metadata-global-log.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index c6cd38a76..291bf850a 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1051,6 +1051,7 @@ test-driver-trs-suffix-registered.test \ test-driver-fail.test \ test-driver-is-distributed.test \ test-driver-acsubst.test \ +test-driver-cond.test \ test-harness-vpath-rewrite.test \ test-log.test \ test-metadata-global-log.test \ diff --git a/tests/test-driver-cond.test b/tests/test-driver-cond.test new file mode 100755 index 000000000..9d067c988 --- /dev/null +++ b/tests/test-driver-cond.test @@ -0,0 +1,117 @@ +#! /bin/sh +# Copyright (C) 2011 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 . + +# parallel-tests: +# - Automake can correctly hande conditionals contents for the +# LOG_DRIVER variables. + +parallel_tests=yes +. ./defs || Exit 1 + +cp "$testsrcdir"/trivial-test-driver . \ + || fatal_ "failed to fetch auxiliary script trivial-test-driver" +# FIXME: better support for installcheck ... +cp "$top_testsrcdir"/lib/tap-driver.pl . \ + || fatal_ "failed to fetch auxiliary script tap-driver.pl" + +cat >> configure.in << END +AM_CONDITIONAL([COND1], [:]) +AM_CONDITIONAL([COND2], [false]) +AM_CONDITIONAL([COND3], [false]) +AC_SUBST([PERL], ['$PERL']) +AC_SUBST([my_LOG_DRIVER], ['\${SHELL} \${top_srcdir}/trivial-test-driver']) +AM_SUBST_NOTMAKE([my_LOG_DRIVER]) +AC_OUTPUT +END + +$ACLOCAL +$AUTOCONF + +cat > Makefile.am << 'END' +TESTS = foo bar.test baz.sh +EXTRA_DIST = $(TESTS) tap-driver.pl trivial-test-driver +TEST_EXTENSIONS = .test .sh +LOG_DRIVER = +SH_LOG_DRIVER = $(tap_rulez) +if COND1 +LOG_DRIVER += @my_LOG_DRIVER@ +if COND2 +tap_rulez = false +else !COND2 +tap_rulez = $(PERL) $(srcdir)/tap-driver.pl +endif !COND2 +endif COND1 +END + +cat > foo <<'END' +#!/bin/sh +echo "PASS: from $0" +echo "SKIP: from $0" +exit 1 # Exit status should be ignored by the trivial-test-driver. +END + +cat > bar.test <<'END' +#!/bin/sh +exit 0 +END + +cat > baz.sh <<'END' +#!/bin/sh +echo 1..3 +echo 'ok 1' +echo 'not ok 2 # TODO' +echo 'not ok 3 # TODO' +END + +chmod a+x foo bar.test baz.sh + +$AUTOMAKE -a +test -f test-driver + +grep DRIVER Makefile.in || Exit 99 # For debugging. + +grep '^my_LOG_DRIVER *=' Makefile.in \ + && fatal_ 'unexpected $(my_LOG_DRIVER) in Makefile.in' + +grep '^TEST_LOG_DRIVER =.*\$(SHELL).*/test-driver' Makefile.in + +./configure + +do_count () +{ + count_test_results total=6 pass=3 fail=0 skip=1 xfail=2 xpass=0 error=0 + grep '^PASS: foo, testcase 1 *$' stdout + grep '^SKIP: foo, testcase 2 *$' stdout + grep '^PASS: bar\.test *$' stdout + $EGREP 'PASS: baz\.sh 1( |$)' stdout + $EGREP 'XFAIL: baz\.sh 2( |$)' stdout + $EGREP 'XFAIL: baz\.sh 3( |$)' stdout +} + +st=0; $MAKE check >stdout || st=$? +cat stdout +cat test-suite.log +cat foo.log +cat bar.log +cat baz.log +test $st -eq 0 || Exit 1 +do_count + +$MAKE distcheck >stdout || { cat stdout; Exit 1; } +cat stdout +do_count + +: