[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AT_BANNER() with empty argument
From: |
Ralf Wildenhues |
Subject: |
Re: AT_BANNER() with empty argument |
Date: |
Mon, 2 Aug 2010 21:18:17 +0200 |
User-agent: |
Mutt/1.5.20 (2010-04-22) |
* Ralf Wildenhues wrote on Sat, Jul 31, 2010 at 06:31:54PM CEST:
> Quick question: we document
>
> -- Macro: AT_BANNER (TEST-CATEGORY-NAME)
> This macro identifies the start of a category of related test
> groups. When the resulting `testsuite' is invoked with more than
> one test group to run, its output will include a banner containing
> TEST-CATEGORY-NAME prior to any tests run from that category. The
> banner should be no more than about 40 or 50 characters. A blank
> banner will not print, effectively ending a category and letting
> subsequent test groups behave as though they are uncategorized
> when run in isolation.
>
> but empty argument to AT_BANNER will not cause separation line from
> previous category with current code, making it look as though the coming
> test groups belong to the previous category. Do you agree that we
> should fix the code rather than the documentation?
> (See 'Banners' test for an example of this.)
Patch to do what I meant. Look at the output of this:
make check TESTSUITEFLAGS='-v -d -x -k banners'
rather than my confused post above, and sorry about the description, I
failed to understand the manual correctly; hope my patch clears that up.
A single space should be unlikely enough to not be passed by users.
Also, looking back at
<http://lists.gnu.org/archive/html/autoconf-patches/2007-10/msg00186.html>
it seems I made you introduce that slight misfeature for optimization
purposes, so sorry about that. ;-)
Thanks,
Ralf
Ensure unnamed test group categories are separated from previous.
* doc/autoconf.texi (Writing Testsuites) <AT_BANNER>: Update
description.
* lib/autotest/general.m4 (AT_INIT) <at_fn_banner>: Set banner
to single space, not empty line, once printed. For empty
banners, print a single empty line to separate them from a
previous test group category.
* tests/autotest.at (Banners): Insert another test group; adjust
tests accordingly. Extend test to cover semantic change.
* NEWS: Update.
diff --git a/NEWS b/NEWS
index b59716c..909e9d6 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,9 @@ GNU Autoconf NEWS - User visible changes.
* Noteworthy changes in release ?.? (????-??-??) [?]
+** AT_BANNER() with empty argument will cause visual separation from previous
+ test cagegory.
+
* Major changes in Autoconf 2.67 (2010-07-21) [stable]
Released by Eric Blake, based on git versions 2.66.*.
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 7e804a7..df0e298 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -23755,9 +23755,8 @@ Writing Testsuites
group to run, its output will include a banner containing
@var{test-category-name} prior to any tests run from that category. The
banner should be no more than about 40 or 50 characters. A blank banner
-will not print, effectively ending a category and letting subsequent
-test groups behave as though they are uncategorized when run in
-isolation.
+indicates uncategorized tests; an empty line will be inserted after
+tests from an earlier category, effectively ending that category.
@end defmac
@defmac AT_SETUP (@var{test-group-name})
diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4
index ba576e3..170200c 100644
--- a/lib/autotest/general.m4
+++ b/lib/autotest/general.m4
@@ -233,7 +233,7 @@ case $at_groups in
at_print_banners=: ;;
* ) at_print_banners=false ;;
esac
-# Text for banner N, set to empty once printed.
+# Text for banner N, set to a single space once printed.
m4_divert_pop([BANNERS])dnl back to DEFAULTS
m4_divert_push([PREPARE_TESTS])dnl
@@ -246,9 +246,13 @@ at_fn_banner ()
{
$at_print_banners || return 0
eval at_banner_text=\$at_banner_text_$[1]
- test "x$at_banner_text" = x && return 0
- eval at_banner_text_$[1]=
- AS_ECHO(["$as_nl$at_banner_text$as_nl"])
+ test "x$at_banner_text" = "x " && return 0
+ eval "at_banner_text_$[1]=\" \""
+ if test -z "$at_banner_text"; then
+ $at_first || echo
+ else
+ AS_ECHO(["$as_nl$at_banner_text$as_nl"])
+ fi
} # at_fn_banner
AS_FUNCTION_DESCRIBE([at_fn_check_prepare_notrace], [REASON LINE],
diff --git a/tests/autotest.at b/tests/autotest.at
index fd3787a..c03c126 100644
--- a/tests/autotest.at
+++ b/tests/autotest.at
@@ -956,15 +956,18 @@ AT_CHECK(:)
AT_CLEANUP
AT_BANNER()
-AT_SETUP(two)# 4
+AT_SETUP(two a)# 4
+AT_CHECK(:)
+AT_CLEANUP
+AT_SETUP(two b)# 5
AT_CHECK(:)
AT_CLEANUP
AT_BANNER([second])
-AT_SETUP(three a)# 5
+AT_SETUP(three a)# 6
AT_CHECK(:)
AT_CLEANUP
-AT_SETUP(three b)# 6
+AT_SETUP(three b)# 7
AT_CHECK(:)
AT_CLEANUP
]])
@@ -983,8 +986,11 @@ AT_CHECK_BANNERS([-2], [first], [1], [second],
[0])
AT_CHECK_BANNERS([-3], [first], [1], [second], [0])
AT_CHECK_BANNERS([-k one], [first], [1], [second], [0])
AT_CHECK_BANNERS([3-4], [first], [1], [second], [0])
-AT_CHECK_BANNERS([3-5], [first], [1], [second], [1])
-AT_CHECK_BANNERS([4-5], [first], [0], [second], [1])
+dnl There should be an empty line separating the first category from the
+dnl unnamed one.
+AT_CHECK([sed -n '/one b/,/two a/p' stdout | grep '^$'], [0], [ignore])
+AT_CHECK_BANNERS([3-6], [first], [1], [second], [1])
+AT_CHECK_BANNERS([4-6], [first], [0], [second], [1])
AT_CHECK_BANNERS([3-], [first], [1], [second], [1])
AT_CHECK_BANNERS([-k a], [first], [1], [second], [1])
AT_CHECK_BANNERS([4], [first], [0], [second], [0])
- Re: AT_BANNER() with empty argument,
Ralf Wildenhues <=