blob: 2ac30de9c13df966466fa841ee7b20e7779ff5af [file] [log] [blame]
#! /bin/sh
# Copyright (C) 2011-2018 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: whitespace normalization (or lack thereof) in the testsuite
# progress output on console. We keep all of these checks here in a single
# script so that a potential cosmetic change in the output format won't
# force us to tweak dozens of other tests (hopefully).
# See also related test 'tap-todo-skip-whitespace.sh'.
. test-init.sh
cat > Makefile.am << 'END'
TEST_LOG_COMPILER = cat
TESTS =
END
: > exp
spaces_a=${sp}${tab}${tab}${sp}${sp}${tab}
spaces_b=${tab}${tab}${sp}${tab}${sp}${sp}${sp}
#-----------------------------------------------------------------------
echo TESTS += numbers.test >> Makefile.am
cat > numbers.test <<END
1..6
ok${spaces_a}1
ok 2${spaces_b}
ok${spaces_a}3${spaces_b}
not ok${spaces_b}4
not ok 5${spaces_a}
not ok${spaces_b}6${spaces_a}
END
cat >> exp <<END
PASS: numbers.test 1
PASS: numbers.test 2
PASS: numbers.test 3
FAIL: numbers.test 4
FAIL: numbers.test 5
FAIL: numbers.test 6
END
#-----------------------------------------------------------------------
echo TESTS += description.test >> Makefile.am
cat > description.test <<END
1..8
ok${spaces_a}+foo
ok +bar${spaces_b}
ok${spaces_a}+baz${spaces_b}
not ok${spaces_b}-foo
not ok -bar${spaces_a}
not ok${spaces_b}-baz${spaces_a}
ok u${spaces_b}v${spaces_a}w${sp}
not ok${spaces_a}x${spaces_a}y${tab}z${tab}
END
cat >> exp <<END
PASS: description.test 1 +foo
PASS: description.test 2 +bar
PASS: description.test 3 +baz
FAIL: description.test 4 -foo
FAIL: description.test 5 -bar
FAIL: description.test 6 -baz
PASS: description.test 7 u${spaces_b}v${spaces_a}w
FAIL: description.test 8 x${spaces_a}y${tab}z
END
#-----------------------------------------------------------------------
# "Bail out!" magic.
echo TESTS += bailout.test >> Makefile.am
cat > bailout.test <<END
1..1
Bail out!${tab}${sp}${sp}${tab}We're out of disk space.
ok 1
END
cat >> exp <<END
ERROR: bailout.test - Bail out! We're out of disk space.
END
echo TESTS += bailout2.test >> Makefile.am
cat > bailout2.test <<END
1..1
Bail out!foo${tab}${sp}
ok 1
END
cat >> exp <<END
ERROR: bailout2.test - Bail out! foo
END
#-----------------------------------------------------------------------
# Diagnostic lines.
echo AM_TEST_LOG_DRIVER_FLAGS = --comments >> Makefile.am
echo TESTS += cmnt.test >> Makefile.am
cat > cmnt.test <<END
1..1
ok 1
#Leading whitespace gets added
# ${tab}${tab} ${tab}Extra leading whitespace is stripped
# Trailing whitespace is stripped ${tab} ${tab}${tab}
# Middle${tab}whitespace is${tab} ${tab}${tab} kept
# ${tab} And only${tab}middle ${tab}whitespace ${tab}${tab} ${tab}
END
cat >> exp <<END
PASS: cmnt.test 1
# cmnt.test: Leading whitespace gets added
# cmnt.test: Extra leading whitespace is stripped
# cmnt.test: Trailing whitespace is stripped
# cmnt.test: Middle${tab}whitespace is${tab} ${tab}${tab} kept
# cmnt.test: And only${tab}middle ${tab}whitespace
END
#-----------------------------------------------------------------------
# TODO: we should have more checks here ... (but let's not over-do FTM).
#-----------------------------------------------------------------------
chmod a+x *.test
. tap-setup.sh
# We don't care about exit status or number of test results, they
# should be checked for in many other tests.
run_make -O -e FAIL check
LC_ALL=C sort exp > t
mv -f t exp
# We need the sort below to account for parallel make usage.
LC_ALL=C grep '[a-z0-9][a-z0-9]*\.test' stdout | LC_ALL=C sort > got
cat exp
cat got
diff exp got
: