From 24093173fd893fe24de2315d4c76c7fd5c23325a Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 5 Mar 2008 09:20:23 -0700 Subject: [PATCH] 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 --- ChangeLog | 8 ++++ tests/autotest.at | 112 ++++++++++++++++++++-------------------------- 2 files changed, 56 insertions(+), 64 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0281018c..d43ea696 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-10 Eric Blake + + 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 Minor documentation fix. diff --git a/tests/autotest.at b/tests/autotest.at index 78d8a8ac..7559fd46 100644 --- a/tests/autotest.at +++ b/tests/autotest.at @@ -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 . +# 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