#! /bin/sh # Copyright (C) 2011-2017 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: 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 :