Factor some autotest tests.

* tests/autotest.at (AT_CHECK_AT_PREP): New macro, to factor out
common initialization.
(AT_CHECK_AT, Banners, Keywords and ranges, srcdir propagation)
(whitespace in absolute testdir, unusual file names): Use it.

Signed-off-by: Eric Blake <ebb9@byu.net>
This commit is contained in:
Eric Blake 2008-03-05 09:20:23 -07:00
parent fd8b6f4727
commit 24093173fd
2 changed files with 56 additions and 64 deletions

View File

@ -1,3 +1,11 @@
2008-03-10 Eric Blake <ebb9@byu.net>
Factor some autotest tests.
* tests/autotest.at (AT_CHECK_AT_PREP): New macro, to factor out
common initialization.
(AT_CHECK_AT, Banners, Keywords and ranges, srcdir propagation)
(whitespace in absolute testdir, unusual file names): Use it.
2008-03-06 Eric Blake <ebb9@byu.net>
Minor documentation fix.

View File

@ -18,6 +18,37 @@ AT_BANNER([Autotest.])
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# AT_CHECK_AT_PREP(NAME, SUITE-CODE, [STATUS = 0], [STDOUT], [STDERR],
# [DIR = .])
# --------------------------------------------------------------------
# Create a new testsuite named NAME that runs a minimal Autotest test suite,
# SUITE-CODE. Do not use `testsuite' for NAME, or the log file it generates
# will overwrite the log that the Autoconf test produces when managing
# this test case. STATUS, STDOUT, and STDERR pass directly to the AT_CHECK
# that compiles the testsuite. DIR can specify a particular subdirectory
# where the testsuite should live.
m4_define([AT_CHECK_AT_PREP],
[AT_KEYWORDS([autotest])dnl
dnl overquote AT_dir, to make it easier to use
m4_pushdef([AT_dir], m4_ifval([$6], [[[$6]]], [.]))dnl
dnl
AT_CAPTURE_FILE([$1.log])dnl
dnl
AT_DATA(AT_dir[/package.m4],
[[m4_define([AT_PACKAGE_NAME], [GNU Nonsense])
m4_define([AT_PACKAGE_TARNAME], [nonsense])
m4_define([AT_PACKAGE_VERSION], [1.0])
m4_define([AT_PACKAGE_STRING], [GNU Nonsense 1.0])
m4_define([AT_PACKAGE_BUGREPORT], [bug-autoconf@gnu.org])
]])
dnl
AT_DATA(AT_dir[/$1.at], [$2])
m4_ifval([$6], [(cd AT_dir])
AT_CHECK_AUTOM4TE([--language=autotest -o $1 $1.at], [$3], [$4], [$5])
m4_ifval([$6], [)])
m4_popdef([AT_dir])dnl
]) # AT_CHECK_AT_PREP
# AT_CHECK_AT(TITLE, SUITE-CODE, [XFAIL-CONDITION], [STATUS = 0],
# [STDOUT := ignore], STDERR, [POST-TEST-CODE])
# ---------------------------------------------------------------
@ -27,28 +58,14 @@ AT_BANNER([Autotest.])
# used, but it is reserved for future use. Run POST-TEST-CODE
# at the top level after the micro-suite has been run.
m4_define([AT_CHECK_AT],
[
AT_SETUP([$1])
AT_KEYWORDS([autotest])
AT_CAPTURE_FILE([micro-suite.log])
[AT_SETUP([$1])
AT_XFAIL_IF([$3])
AT_CHECK_AT_PREP([micro-suite], [$2])
AT_DATA([package.m4],[[
m4_define([AT_PACKAGE_NAME], [GNU Nonsense])
m4_define([AT_PACKAGE_TARNAME], [nonsense])
m4_define([AT_PACKAGE_VERSION], [1.0])
m4_define([AT_PACKAGE_STRING], [GNU Nonsense 1.0])
m4_define([AT_PACKAGE_BUGREPORT], [bug-autoconf@gnu.org])
]])
AT_DATA([mysuite.at], [$2])
# Do not use `testsuite' as the name of the small test suite, or the
# log file it generates will overwrite the log that the Autoconf test
# suite produces for this test case.
AT_CHECK_AUTOM4TE([--language=autotest -o micro-suite mysuite.at])
AT_CHECK([$CONFIG_SHELL ./micro-suite], m4_default([$4], 0), [ignore], [$6])
AT_CHECK([$CONFIG_SHELL ./micro-suite -v -x], m4_default([$4], 0), [ignore], [$6])
AT_CHECK([$CONFIG_SHELL ./micro-suite], m4_default([$4], 0),
[ignore], [$6])
AT_CHECK([$CONFIG_SHELL ./micro-suite -v -x], m4_default([$4], 0),
[ignore], [$6])
$7
AT_CLEANUP
])# AT_CHECK_AT
@ -470,12 +487,9 @@ AT_CHECK([$CONFIG_SHELL ./micro-suite -C nonesuch --help], [0], [ignore], [])
## Banners. ##
## -------- ##
AT_SETUP([Banners])
AT_KEYWORDS([autotest])
AT_DATA([b.at],
[[m4_define([AT_PACKAGE_STRING],[b])
m4_define([AT_PACKAGE_BUGREPORT],[devnull])
AT_INIT
AT_CHECK_AT_PREP([b],
[[AT_INIT
AT_SETUP(zero)# 1
AT_CHECK(:)
AT_CLEANUP
@ -488,7 +502,6 @@ AT_SETUP(one b)# 3
AT_CHECK(:)
AT_CLEANUP
AT_BANNER()
AT_SETUP(two)# 4
AT_CHECK(:)
@ -502,7 +515,6 @@ AT_SETUP(three b)# 6
AT_CHECK(:)
AT_CLEANUP
]])
AT_CHECK_AUTOM4TE([--language=autotest -o b b.at])
# AT_CHECK_BANNERS(TESTSUITE-OPTIONS, PATTERN1, COUNT1, PATTERN2, COUNT2)
m4_define([AT_CHECK_BANNERS],
@ -536,12 +548,9 @@ AT_CLEANUP
## Keywords. ##
## --------- ##
AT_SETUP([Keywords and ranges])
AT_KEYWORDS([autotest])
AT_DATA([k.at],
[[m4_define([AT_PACKAGE_STRING],[k])
m4_define([AT_PACKAGE_BUGREPORT],[devnull])
AT_INIT
AT_CHECK_AT_PREP([k],
[[AT_INIT
AT_SETUP(none)
AT_CHECK(:)
AT_CLEANUP
@ -559,7 +568,6 @@ AT_KEYWORDS([key1])
AT_CHECK(:)
AT_CLEANUP
]])
AT_CHECK_AUTOM4TE([--language=autotest -o k k.at])
dnl check that AT_KEYWORDS does not duplicate words
AT_CHECK([grep 'key1.*key1' k], [1])
dnl check that -k requires an argument
@ -623,8 +631,6 @@ AT_CLEANUP
## ------------------- ##
AT_SETUP([srcdir propagation])
AT_KEYWORDS([autotest])
AT_CAPTURE_FILE([suite.log])
mkdir pkg vpath-outside vpath-abs
mkdir pkg/t pkg/vpath-inside
@ -641,20 +647,12 @@ cd pkg
AT_CHECK_AUTOCONF
cd ..
AT_DATA([pkg/t/suite.at],
[[m4_define([AT_PACKAGE_NAME], [GNU Nonsense])
m4_define([AT_PACKAGE_TARNAME], [nonsense])
m4_define([AT_PACKAGE_VERSION], [1.0])
m4_define([AT_PACKAGE_STRING], [GNU Nonsense 1.0])
m4_define([AT_PACKAGE_BUGREPORT], [bug-autoconf@gnu.org])
AT_INIT([suite to check srcdir])
AT_CHECK_AT_PREP([suite],
[[AT_INIT([suite to check srcdir])
AT_SETUP([my only test])
AT_CHECK([test -f "$top_srcdir"/a && test -f "$srcdir"/b])
AT_CLEANUP
]])
cd pkg/t
AT_CHECK_AUTOM4TE([--language=autotest -o suite suite.at])
cd ../..
]], [], [], [], [pkg/t])
# Build directory totally outside source directory.
cd vpath-outside
@ -699,7 +697,6 @@ AT_CLEANUP
## ------------------------------ ##
AT_SETUP([whitespace in absolute testdir])
AT_KEYWORDS([autotest])
dir='dir with whitespace'
mkdir "$dir"
@ -707,18 +704,12 @@ cd "$dir"
wd=`pwd`
AT_DATA([a])
AT_DATA([suite.at],
[[m4_define([AT_PACKAGE_NAME], [GNU Nonsense])
m4_define([AT_PACKAGE_TARNAME], [nonsense])
m4_define([AT_PACKAGE_VERSION], [1.0])
m4_define([AT_PACKAGE_STRING], [GNU Nonsense 1.0])
m4_define([AT_PACKAGE_BUGREPORT], [bug-autoconf@gnu.org])
AT_INIT([suite to check srcdir])
AT_CHECK_AT_PREP([suite],
[[AT_INIT([suite to check srcdir])
AT_SETUP([my only test])
AT_CHECK([test -f "$top_srcdir"/a])
AT_CLEANUP
]])
AT_CHECK_AUTOM4TE([--language=autotest -o suite suite.at])
AT_CHECK([top_srcdir=$wd ./suite], [0], [ignore])
AT_CHECK([top_srcdir=$wd ./suite -d], [0], [ignore])
AT_CHECK([cd suite.dir/1 && ./run top_srcdir="$wd"], [0], [ignore], [ignore])
@ -730,7 +721,6 @@ AT_CLEANUP
## ------------------ ##
AT_SETUP([unusual file names])
AT_KEYWORDS([autotest])
AT_DATA_M4SUGAR([d@&t@nl.at],
[[AT_SETUP([test one])
@ -746,16 +736,10 @@ AT_CHECK([test "]m4_dquote(AT_LINE)[" = "two spaces.at:2"])
AT_CLEANUP
]])
AT_DATA([suite.at],
[[m4_define([AT_PACKAGE_NAME], [GNU Nonsense])
m4_define([AT_PACKAGE_TARNAME], [nonsense])
m4_define([AT_PACKAGE_VERSION], [1.0])
m4_define([AT_PACKAGE_STRING], [GNU Nonsense 1.0])
m4_define([AT_PACKAGE_BUGREPORT], [bug-autoconf@gnu.org])
AT_INIT([suite to check included file names])
AT_CHECK_AT_PREP([suite],
[[AT_INIT([suite to check included file names])
m4@&t@_include([d][nl.at])
m4@&t@_include([sub/two spaces.at])
]])
AT_CHECK_AUTOM4TE([--language=autotest -o suite suite.at])
AT_CHECK([$CONFIG_SHELL ./suite], [0], [ignore])
AT_CLEANUP