diff options
Diffstat (limited to 't/parallel-tests-dry-run-2.sh')
-rwxr-xr-x | t/parallel-tests-dry-run-2.sh | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/t/parallel-tests-dry-run-2.sh b/t/parallel-tests-dry-run-2.sh new file mode 100755 index 000000000..0d13677c2 --- /dev/null +++ b/t/parallel-tests-dry-run-2.sh @@ -0,0 +1,113 @@ +#! /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 <http://www.gnu.org/licenses/>. + +# Check parallel-tests interactions with "make -n". +# See also sister test 'parallel-tests-dry-run-1.test'. + +am_parallel_tests=yes +. ./defs || Exit 1 + +cat >> configure.ac << 'END' +AC_OUTPUT +END + +cat > Makefile.am <<'END' +TESTS = foo.test bar.test +TEST_LOG_COMPILER = $(SHELL) +END + +$ACLOCAL +$AUTOMAKE -a +$AUTOCONF + +./configure + +make_n_ () +{ + st=0 + $MAKE -n "$@" >output 2>&1 || { cat output; ls -l; Exit 1; } + cat output + # Look out for possible errors from common tools used by recipes. + $EGREP -i ' (exist|permission|denied|no .*(such|file))' output && Exit 1 + $EGREP '(mv|cp|rm|cat|grep|sed|awk): ' output && Exit 1 + : +} + +: > output + +files='foo.log bar.log foo.trs bar.trs' + +for target in check recheck test-suite.log; do + test ! -f foo.log + test ! -f foo.trs + test ! -f bar.log + test ! -f bar.trs + test ! -f test-suite.log +done + +# Creative quoting below to please maintainer-check. +echo exit '0' > foo.test +echo exit '1' > bar.test + +$MAKE check && Exit 1 + +chmod a-w . + +make_n_ clean +test -f foo.log +test -f foo.trs +test -f foo.log +test -f bar.trs + +# Creative quoting below to please maintainer-check. +cat > foo.test <<END +echo this is bad +exit 1 +END +echo exit '0' > bar.test + +for target in check recheck test-suite.log; do + make_n_ $target + grep '^:test-result: *FAIL' bar.trs + grep 'this is bad' foo.log test-suite.log && Exit 1 + : For shells with busted 'set -e'. +done + +chmod a-rw $files +if test -r foo.log; then + : You can still read unreadable files! Skip these checks. +else + for target in check recheck test-suite.log; do + make_n_ $target + for f in $files; do + test -f $f && test ! -r $f || Exit 1 + done + done +fi +chmod u+r $files + +chmod u+w . +rm -f foo.log bar.trs +chmod a-w . +for target in check recheck test-suite.log $files; do + make_n_ $target + test ! -f foo.log + test -f foo.trs + test ! -f bar.trs + test -f bar.log +done + +: |