diff options
Diffstat (limited to 't/tap-diagnostic.sh')
-rwxr-xr-x | t/tap-diagnostic.sh | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/t/tap-diagnostic.sh b/t/tap-diagnostic.sh new file mode 100755 index 000000000..31f5df6e2 --- /dev/null +++ b/t/tap-diagnostic.sh @@ -0,0 +1,124 @@ +#! /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/>. + +# TAP support: +# - diagnostic messages (TAP lines with leading "#") +# - flags '--comments' and '--no-comments' of the TAP test driver + +am_parallel_tests=yes +. ./defs || Exit 1 + +. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh" + +metacharacters=\''"\$!&()[]<>#;^?*' + +cat > all.test <<END +1..4 +# Hi! I'm a comment. +# Tests begin. +ok 1 +not ok 2 - foo # TODO +ok 3 - bar # SKIP +# Tests end. +ok - zardoz +# Shell metacharacters here: $metacharacters +.# Leading characters before "#", not a TAP diagnostic line. +x # Leading characters before "#", not a TAP diagnostic line. + # Leading whitespace before "#", not a TAP diagnostic line. +${tab}# Leading whitespace before "#", not a TAP diagnostic line. + ${tab} # Leading whitespace before "#", not a TAP diagnostic line. +END + +cat > exp <<END +# all.test: Hi! I'm a comment. +# all.test: Tests begin. +PASS: all.test 1 +XFAIL: all.test 2 - foo # TODO +SKIP: all.test 3 - bar # SKIP +# all.test: Tests end. +PASS: all.test 4 - zardoz +# all.test: Shell metacharacters here: $metacharacters +END + +$MAKE check >stdout || { cat stdout; Exit 1; } +cat stdout +$EGREP -i "#.*all\\.test|a comment|(Tests|Shell) " stdout && Exit 1 +count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0 + +echo 'AM_TEST_LOG_DRIVER_FLAGS = --comments' >> Makefile +$MAKE check >stdout || { cat stdout; Exit 1; } +cat stdout +$FGREP ' all.test' stdout > got +cat exp +cat got +diff exp got +count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0 + +TEST_LOG_DRIVER_FLAGS="--no-comments" $MAKE -e check >stdout \ + || { cat stdout; Exit 1; } +cat stdout +$EGREP -i "#.*all\\.test|a comment|(Tests|Shell) " stdout && Exit 1 +count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0 + +# The "#"-prepended lines here shouldn't be parsed as test results. +cat > all.test <<END +1..1 +ok +# ok +#ok +# not ok +#not ok +# Bail out! +#Bail out! +# SKIP +#SKIP +# TODO +#TODO +END + +$MAKE check >stdout || { cat stdout; Exit 1; } +cat stdout +count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0 + +# Diagnostic without leading whitespace, or with extra leading whitespace, +# is ok. Be laxer in the grepping checks, to allow for whitespace +# normalization by the TAP driver. + +ws="[ $tab]" +ws0p="${ws}*" +ws1p="${ws}${ws0p}" + +cat > all.test <<END +1..1 +ok 1 +#foo +#bar${tab} +# zardoz ${tab} +# ${tab} ${tab}${tab}foo bar${tab}baz ${tab} +END + +$MAKE check >stdout || { cat stdout; Exit 1; } +cat stdout +count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0 + +grep "^# all.test:${ws0p}foo$" stdout +grep "^# all.test:${ws0p}bar${ws0p}$" stdout +grep "^# all.test:${ws1p}zardoz${ws0p}$" stdout +grep "^# all.test:${ws1p}foo bar${tab}baz${ws0p}$" stdout + +test `grep -c '^# all\.test:' stdout` -eq 4 + +: |