blob: a968e22ab038804abecc7ea5cacb1489ca063d8e [file] [log] [blame]
#! /bin/sh
# Copyright (C) 2011-2024 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/>.
# TAP support:
# - all input (valid TAP lines, invalid TAP lines, non-TAP lines)
# are passed through in the log file
# - TAP errors are reported in the log file too
# See also related test 'tap-passthrough-exit.sh'.
. test-init.sh
weirdchars=\''"\$@!&()[]<>#;,:.^?*/'
. tap-setup.sh
#
# Only successful tests.
#
# The whitespace in this test might be normalized in the testsuite
# progress output, but should be copied verbatim in the log files.
cat > ok.test <<END
1..6
TAP plan in the previous line.
ok${tab}
ok 2
ok - foo
ok 4 - x
This is not a TAP line, but should still be copied in the log file!
# some diagnostic${tab}
not ok # TODO low priority
ok # SKIP who cares?
$weirdchars
END
run_make TESTS=ok.test check || { cat ok.log; exit 1; }
cat ok.log
for rx in \
'1\.\.6' \
'TAP plan in the previous line\.' \
"ok${tab}" \
'ok 2' \
'ok - foo' \
'ok 4 - x' \
' This is not a TAP line, but should still be copied in the log file!' \
"# some diagnostic${tab}" \
'not ok # TODO low priority' \
'ok # SKIP who cares?' \
; do
grep "^$rx$" ok.log
done
$FGREP "$weirdchars" ok.log
#
# Mixed failing/successful tests.
#
cat > tiny.test <<END
1..1
ok
END
cat > ok.test <<END
1..1
ok
only one success here
END
cat > ko.test <<END
1..5
foo foo foo
ok${tab}
ok 2
not ok - foo
not ok 4 - x
# diagnostic ko
bar${tab}bar${tab}bar
ok # TODO dunno
$weirdchars
END
cat > bail.test <<END
Bail out! Test is taking too long!
END
cat > skip.test <<END
1..0 # Skipped: WWW::Mechanize not installed
END
cat > err.test <<END
1..3
ok 1
Invalid test count
ok 23
Misplaced plan
1..13
ok
Extra test
ok
Last line
END
st=0
run_make check \
TESTS='tiny.test ok.test ko.test bail.test skip.test err.test' || st=$?
cat tiny.log
cat ok.log
cat ko.log
cat bail.log
cat skip.log
cat err.log
test $st -gt 0 || exit 1
grep '^1\.\.1$' tiny.log
grep '^ok$' tiny.log
grep '^only one success here$' ok.log
for rx in \
'1\.\.5' \
'foo foo foo' \
"ok${tab}" \
'ok 2' \
'not ok - foo' \
'not ok 4 - x' \
'# diagnostic ko' \
" bar${tab}bar${tab}bar" \
'ok # TODO dunno' \
; do
grep "^$rx$" ko.log
done
$FGREP "$weirdchars" ko.log
grep '^Bail out! Test is taking too long!$' bail.log
grep '^1\.\.0 # Skipped: WWW::Mechanize not installed$' skip.log
for rx in \
'^1\.\.3$' \
'^Invalid test count$' \
'^ok 23$' \
'^Misplaced plan$' \
'^1\.\.13$' \
'^ERROR:.* multiple test plans' \
'^Extra test$' \
'^Last line$' \
'^ERROR:.* [tT]oo many tests run.*expected 3, got 4' \
'^ERROR:.* err\.test 23 .*OUT[ -]OF[ -]ORDER.*expecting 2' \
; do
grep "$rx" err.log
done
: