From: Eric Blake Date: Tue, 29 Jan 2008 23:56:36 +0000 (-0700) Subject: Fix more autotest regressions. X-Git-Tag: v2.62~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81e79b1cb44043cf46f8df708c4a8b93d7d731c2;p=thirdparty%2Fautoconf.git Fix more autotest regressions. * lib/autotest/general.m4 (AT_LINE): Fix regression from 2007-10-04 when file name is `dnl'. (AT_INIT) : Move command-line assignments... : ...to this new diversion, to fix regression from yesterday in libtool's testsuite. (_AT_ARG_OPTION): Detect write failure. * doc/autoconf.texi (Diversion support): Document PREPARE_TESTS to make libtool's use kosher. Document m4_init. (Programming in M4sh): Document AS_INIT. (Writing Testsuites): Document limitation of AT_DATA file name. * tests/autotest.at (unusual file names): New test. (Banners, Keywords and ranges): Use correct shell. Signed-off-by: Eric Blake --- diff --git a/ChangeLog b/ChangeLog index 5af0f7d7..1d547ce8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2008-01-29 Eric Blake + Fix more autotest regressions. + * lib/autotest/general.m4 (AT_LINE): Fix regression from + 2007-10-04 when file name is `dnl'. + (AT_INIT) : Move command-line assignments... + : ...to this new diversion, to fix regression from + yesterday in libtool's testsuite. + (_AT_ARG_OPTION): Detect write failure. + * doc/autoconf.texi (Diversion support): Document PREPARE_TESTS to + make libtool's use kosher. Document m4_init. + (Programming in M4sh): Document AS_INIT. + (Writing Testsuites): Document limitation of AT_DATA file name. + * tests/autotest.at (unusual file names): New test. + (Banners, Keywords and ranges): Use correct shell. + More corner cases in testsuite VAR=VALUE handling. * lib/autotest/general.m4 (AT_INIT) &AS_MESSAGE_LOG_FD +m4_divert_pop([TESTS_BEGIN])dnl +m4_divert_push([PREPARE_TESTS])dnl +{ AS_BOX([Tested programs.]) echo } >&AS_MESSAGE_LOG_FD @@ -1252,13 +1258,13 @@ m4_divert_push([KILL]) # Internal implementation of AT_ARG_OPTION & AT_ARG_OPTION_ARG m4_defun([_AT_ARG_OPTION], [m4_divert_once([HELP_OTHER], -[cat <<_ATEOF +[cat <<_ATEOF || at_write_fail=1 Other options: _ATEOF ])dnl m4_divert_once HELP_OTHER m4_divert_text([HELP_OTHER], -[cat <<_ATEOF +[cat <<_ATEOF || at_write_fail=1 $2 _ATEOF])dnl dnl Turn our options into our desired strings diff --git a/tests/autotest.at b/tests/autotest.at index 4e016d76..d9486d08 100644 --- a/tests/autotest.at +++ b/tests/autotest.at @@ -495,7 +495,7 @@ AT_CHECK_AUTOM4TE([--language=autotest -o b b.at]) # AT_CHECK_BANNERS(TESTSUITE-OPTIONS, PATTERN1, COUNT1, PATTERN2, COUNT2) m4_define([AT_CHECK_BANNERS], -[AT_CHECK([./b $1], [], [stdout]) +[AT_CHECK([$CONFIG_SHELL ./b $1], [], [stdout]) AT_CHECK_EGREP([$2], m4_if([$3], [0], [1], [0]), [$3]) AT_CHECK_EGREP([$4], m4_if([$5], [0], [1], [0]), [$5]) ]) @@ -552,11 +552,11 @@ 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 -AT_CHECK([./k -k], [1], [], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k -k], [1], [], [ignore]) # AT_CHECK_KEYS(TESTSUITE-OPTIONS, PATTERN1, COUNT1, PATTERN2, COUNT2) m4_define([AT_CHECK_KEYS], -[AT_CHECK([./k $1], 0, [stdout]) +[AT_CHECK([$CONFIG_SHELL ./k $1], 0, [stdout]) AT_CHECK_EGREP([$2], 0, [$3]) AT_CHECK_EGREP([$4], 1, [$5]) ]) @@ -593,13 +593,13 @@ AT_CHECK_KEYS([-3], [none|first|second], [3], [both], [0]) AT_CHECK_KEYS([4-], [both], [1], [none|first|second], [0]) AT_CHECK_KEYS([-k second 4-], [second|both], [2], [none|first], [0]) -AT_CHECK([./k 0], [1], [ignore], [ignore]) -AT_CHECK([./k 0-], [1], [ignore], [ignore]) -AT_CHECK([./k -0], [1], [ignore], [ignore]) -AT_CHECK([./k 5], [1], [ignore], [ignore]) -AT_CHECK([./k 5-], [1], [ignore], [ignore]) -AT_CHECK([./k 1-5], [1], [ignore], [ignore]) -AT_CHECK([./k -k nonexistent], [0], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k 0], [1], [ignore], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k 0-], [1], [ignore], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k -0], [1], [ignore], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k 5], [1], [ignore], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k 5-], [1], [ignore], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k 1-5], [1], [ignore], [ignore]) +AT_CHECK([$CONFIG_SHELL ./k -k nonexistent], [0], [ignore]) AT_CHECK_KEYS([--list -k nonexistent], [KEYWORDS], [1], [first|second|both], [0]) AT_CHECK_KEYS([--list 1], [none], [1], [first|second|both], [0]) @@ -712,3 +712,39 @@ 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]) AT_CLEANUP + + +## ------------------ ## +## unusual file names ## +## ------------------ ## + +AT_SETUP([unusual file names]) +AT_KEYWORDS([autotest]) + +AT_DATA_M4SUGAR([d@&t@nl.at], +[[AT_SETUP([test one]) +m4_pattern_allow([^dnl$]) +AT_CHECK([test "]m4_dquote(AT_LINE)[" = dn[]l.at:3]) +AT_CLEANUP +]]) + +mkdir sub +AT_DATA_M4SUGAR([sub/"two spaces".at], +[[AT_SETUP([test two]) +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]) +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