]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Factor some autotest tests.
authorEric Blake <ebb9@byu.net>
Wed, 5 Mar 2008 16:20:23 +0000 (09:20 -0700)
committerEric Blake <ebb9@byu.net>
Tue, 11 Mar 2008 02:48:02 +0000 (20:48 -0600)
* 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>
ChangeLog
tests/autotest.at

index 0281018c2d3100e47b3c8449dbbb51fb842aee9f..d43ea696bbc2d7ed32f1be95be642a428ad89a83 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
index 78d8a8ac5bdb48f4c659e95ca74dc43fc1753fd6..7559fd46161f7f64655967bcb8b8b5da402cb2d2 100644 (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