[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] {master} Improve and extend tests on `:=' variable assignmen
From: |
Ralf Wildenhues |
Subject: |
Re: [PATCH] {master} Improve and extend tests on `:=' variable assignments. |
Date: |
Mon, 29 Nov 2010 07:22:51 +0100 |
User-agent: |
Mutt/1.5.20 (2010-08-04) |
* Stefano Lattarini wrote on Thu, Nov 25, 2010 at 02:37:28PM CET:
> The attached patch is based off of maint, and intended for master.
> OK to apply?
With nits addressed.
Thanks,
Ralf
> Improve and extend tests on `:=' variable assignments.
>
> * tests/colneq.test: Avoid useless use of wildcards and extra
> variable assignments in Makefile.am. Use command-line automake
> options instead of editing AUTOMAKE_OPTIONS in Makefile.am.
> Make grepping of the generated Makefile.in slightly stricter.
> Add a trailing `:' command.
> * tests/colneq.test: Avoid useless use of EXTRA_DIST special
> variable in Makefile.am. Do not create dummy files which are
> not needed anymore. Also run autoconf, ./configure and make.
> Add a trailing `:' command.
> * tests/colneq3.test: New test, similar to colneq.test, but
> running ./configure and make.
> * tests/Makefile.am (TESTS): Update.
> --- a/tests/colneq.test
> +++ b/tests/colneq.test
> @@ -21,14 +22,14 @@
> set -e
>
> cat > Makefile.am << 'END'
> -ICONS := $(wildcard *.xbm)
Please leave the wildcard line in. Removing it makes assumptions about
the parser.
> -data_DATA = $(ICONS)
> +FOOBAR := zardoz
> END
>
> $ACLOCAL
> AUTOMAKE_fails
> grep ':=.*not portable' stderr
>
> -echo 'AUTOMAKE_OPTIONS = -Wno-portability' >> Makefile.am
> -$AUTOMAKE
> -grep 'ICONS :=' Makefile.in
> +$AUTOMAKE -Wno-portability
> +grep '^FOOBAR *:= *zardoz *$' Makefile.in
> +
> +:
> --- a/tests/colneq2.test
> +++ b/tests/colneq2.test
> @@ -20,14 +20,23 @@
>
> set -e
>
> +cat >> configure.in << 'END'
> +AC_OUTPUT
> +END
> +
> cat > Makefile.am << 'END'
> t = a b c
> -EXTRA_DIST = $(t:=.test)
Please leave the EXTRA_DIST line in. It is something different if
automake skips a normal variable containing this, and a variable that is
special to automake.
> +FOO = $(t:=.test)
> +.PHONY: test
> +test:
> + test x'$(FOO)' = x'a.test b.test c.test'
> END
>
> -: > a.test
> -: > b.test
> -: > c.test
> -
> $ACLOCAL
> +$AUTOCONF
> $AUTOMAKE
> +
> +./configure
> +$MAKE test
> +
> +:
> --- /dev/null
> +++ b/tests/colneq3.test
> @@ -0,0 +1,46 @@
> +# Test that := definitions work as expected at make time.
> +
> +required=GNUmake
> +. ./defs || Exit 1
> +
> +set -e
> +
> +cat >> configure.in << 'END'
> +AC_OUTPUT
> +END
> +
> +cat > Makefile.am << 'END'
> +BAR := $(FOO)
> +BAZ = $(FOO)
> +FOO := foo
Uh, oh. Thin ice. This is OK, but we gotta remember that it won't
work reliably if some of these variables are actually automake-set
before they are overridden. automake generally orders all of its
variable settings before all of the user ones (so the user ones are
preferred). When I override, e.g., libdir here, however, it doesn't
get reordered to the user part. I wonder whether that is a bug in
automake.
> +.PHONY: test
> +test:
> + test x'$(FOO)' = x'foo'
> + test x'$(BAZ)' = x'foo'
> + test x'$(BAR)' = x
> +END
> +
> +$ACLOCAL
> +$AUTOCONF
> +$AUTOMAKE -Wno-portability
Trailing white space.
> +
> +./configure
> +$MAKE test
> +
> +: