mirror of
https://https.git.savannah.gnu.org/git/automake.git
synced 2026-01-28 10:24:26 +00:00
169 lines
3.9 KiB
Bash
169 lines
3.9 KiB
Bash
#! /bin/sh
|
|
# Copyright (C) 2011-2025 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/>.
|
|
|
|
# Basic TAP support:
|
|
# - LOG_COMPILER support;
|
|
# - basic support for TODO and SKIP directives, and "Bail out!" magic;
|
|
# - testsuite progress output on console;
|
|
# - runtime overriding of TESTS and TEST_LOGS;
|
|
# - correct counts of test results (both in summary and in progress
|
|
# output on console).
|
|
# Note that some of the features checked here are checked in other
|
|
# test cases too, usually in a more thorough and detailed way.
|
|
|
|
. test-init.sh
|
|
|
|
fetch_tap_driver
|
|
|
|
cat >> configure.ac <<END
|
|
AC_OUTPUT
|
|
END
|
|
|
|
cat > Makefile.am << 'END'
|
|
TEST_LOG_DRIVER = $(srcdir)/tap-driver
|
|
## Defining LOG_COMPILER should work and not interfere with the
|
|
## tap-driver script.
|
|
TEST_LOG_COMPILER = cat
|
|
TESTS = success.test
|
|
|
|
ok.test:
|
|
echo '1..3' > $@-t
|
|
echo 'ok 1' >> $@-t
|
|
echo 'not ok 2 # TODO' >>$@-t
|
|
echo 'ok 3 # SKIP' >>$@-t
|
|
cat $@-t ;: For debugging.
|
|
mv -f $@-t $@
|
|
END
|
|
|
|
cat > success.test << 'END'
|
|
1..20
|
|
ok 1
|
|
ok 2 two
|
|
ok 3 - three
|
|
ok 4 four four
|
|
not ok 5
|
|
not ok 6 six
|
|
not ok 7 - seven
|
|
not ok 8 eight eight
|
|
ok 9 # TODO
|
|
ok 10 ten # TODO
|
|
ok 11 - eleven # TODO
|
|
ok 12 twelve twelve # TODO
|
|
not ok 13 # TODO
|
|
not ok 14 fourteen # TODO
|
|
not ok 15 - fifteen # TODO
|
|
not ok 16 sixteen sixteen # TODO
|
|
ok 17 # SKIP
|
|
ok 18 eighteen # SKIP
|
|
ok 19 - nineteen # SKIP
|
|
ok 20 twenty twenty # SKIP
|
|
END
|
|
|
|
$ACLOCAL
|
|
$AUTOCONF
|
|
$AUTOMAKE
|
|
|
|
./configure
|
|
|
|
# Basilar usage and testsuite progress output.
|
|
|
|
run_make -O -e FAIL check
|
|
count_test_results total=20 pass=4 fail=4 xpass=4 xfail=4 skip=4 error=0
|
|
|
|
test -f success.log
|
|
test -f test-suite.log
|
|
|
|
cat > exp << 'END'
|
|
PASS: success.test 1
|
|
PASS: success.test 2 two
|
|
PASS: success.test 3 - three
|
|
PASS: success.test 4 four four
|
|
FAIL: success.test 5
|
|
FAIL: success.test 6 six
|
|
FAIL: success.test 7 - seven
|
|
FAIL: success.test 8 eight eight
|
|
XPASS: success.test 9 # TODO
|
|
XPASS: success.test 10 ten # TODO
|
|
XPASS: success.test 11 - eleven # TODO
|
|
XPASS: success.test 12 twelve twelve # TODO
|
|
XFAIL: success.test 13 # TODO
|
|
XFAIL: success.test 14 fourteen # TODO
|
|
XFAIL: success.test 15 - fifteen # TODO
|
|
XFAIL: success.test 16 sixteen sixteen # TODO
|
|
SKIP: success.test 17 # SKIP
|
|
SKIP: success.test 18 eighteen # SKIP
|
|
SKIP: success.test 19 - nineteen # SKIP
|
|
SKIP: success.test 20 twenty twenty # SKIP
|
|
END
|
|
|
|
$FGREP ': success.test' stdout > got
|
|
|
|
cat exp
|
|
cat got
|
|
diff exp got
|
|
|
|
# Override TESTS from the command line.
|
|
|
|
rm -f *.log *.test
|
|
|
|
cat > bail.test <<'END'
|
|
1..1
|
|
Bail out!
|
|
ok 1
|
|
END
|
|
|
|
run_make -O -e FAIL check TESTS=bail.test
|
|
count_test_results total=1 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=1
|
|
|
|
test ! -e success.log
|
|
test -f bail.log
|
|
test -f test-suite.log
|
|
|
|
grep '^ERROR: bail\.test - Bail out!' stdout
|
|
grep '^PASS:' stdout && exit 1
|
|
test $($FGREP -c ': bail.test' stdout) -eq 1
|
|
$FGREP 'success.test' stdout && exit 1
|
|
|
|
# Override TEST_LOGS from the command line, making it point to a test
|
|
# (ok.test) that has to be generated at make time.
|
|
|
|
rm -f *.log *.test
|
|
|
|
run_make -O check TEST_LOGS=ok.log
|
|
count_test_results total=3 pass=1 fail=0 xpass=0 xfail=1 skip=1 error=0
|
|
|
|
test -f ok.test
|
|
test -f ok.log
|
|
test ! -e success.log
|
|
test ! -e bail.log
|
|
test -f test-suite.log
|
|
|
|
$EGREP '(bail|success)\.test' stdout && exit 1
|
|
|
|
cat > exp << 'END'
|
|
PASS: ok.test 1
|
|
XFAIL: ok.test 2 # TODO
|
|
SKIP: ok.test 3 # SKIP
|
|
END
|
|
|
|
$FGREP ': ok.test' stdout > got
|
|
|
|
cat exp
|
|
cat got
|
|
diff exp got
|
|
|
|
:
|