automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Modernize, improve and/or extend tests `colon*.test.


From: Ralf Wildenhues
Subject: Re: [PATCH] Modernize, improve and/or extend tests `colon*.test.
Date: Thu, 17 Jun 2010 21:46:30 +0200
User-agent: Mutt/1.5.20 (2010-04-22)

* Stefano Lattarini wrote on Sat, Jun 12, 2010 at 11:48:15PM CEST:
> Another patch tweaking scripts in the testsuite.

Thanks, most of this is uncontroversial, but a couple of things I don't
understand:

> --- a/tests/colon3.test
> +++ b/tests/colon3.test
> @@ -1,6 +1,6 @@
>  #! /bin/sh
> -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003
> -#   Free Software Foundation, Inc.
> +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2010 Free Software
> +# Foundation, Inc.
>  #
>  # This program is free software; you can redistribute it and/or modify
>  # it under the terms of the GNU General Public License as published by
> @@ -22,10 +22,11 @@
>  
>  set -e
>  
> -cat > configure.in << 'END'
> -AC_INIT
> -AM_INIT_AUTOMAKE(nonesuch, nonesuch)
> -AC_OUTPUT(Makefile:zardoz.in:two.in:three.in)
> +cat > configure.in <<END
> +AC_INIT([$me], [1.0])
> +AM_INIT_AUTOMAKE
> +AC_CONFIG_FILES([Makefile:zardoz.in:two.in:three.in])
> +AC_OUTPUT
>  END
>  
>  : > zardoz.am
> @@ -41,15 +42,14 @@ test -f zardoz.in
>  
>  # The generated file should refer to zardoz.in and zardoz.am, but
>  # never just "zardoz".
> -echo Grep1
> -grep zardoz zardoz.in | $FGREP -v 'zardoz.in' | $FGREP -v 'zardoz.am' > O || 
> :
> -# We cat the output file so we see in when verbose.
> -cat O
> -test -z "`cat O`"
> -
> -# Makefile should depend on two.in.
> -echo Grep2
> -grep '^Makefile:.* \$(srcdir)/two.in' zardoz.in
> -# Likewise three.in.
> -echo Grep3
> -grep '^Makefile:.* \$(srcdir)/three.in' zardoz.in
> +$PERL -ne '
> +  s/\bzardoz\.(in|am)\b/zrdz.$1/g;
> +  print if /zardoz/;
> +' <zardoz.in >out
> +test ! -s out || { cat out; Exit 1; }

Your changes seem to have valued efficiency so far.  But calling perl is
bound to be more expensive than a couple of greps.  The change looks
good to me, how come you went this way though?  Just curious.

> +# Makefile should depend on two.in and three.in.
> +grep '^Makefile:.* \$(srcdir)/two\.in' zardoz.in
> +grep '^Makefile:.* \$(srcdir)/three\.in' zardoz.in

FYI, such greps can break in the future, if the dependency lines happen
to be line-wrapped.  Yes, this has been there before.

> --- a/tests/colon5.test
> +++ b/tests/colon5.test
> @@ -21,16 +21,31 @@
>  
>  set -e
>  
> -cat > configure.in << 'END'
> -AC_INIT
> -AM_INIT_AUTOMAKE(nonesuch, nonesuch)
> -AC_OUTPUT(Makefile:Makefile.in:Makefile.dep)
> +cat > configure.in <<END
> +AC_INIT([$me], [1.0])
> +AM_INIT_AUTOMAKE
> +AC_CONFIG_FILES([Makefile:Makefile.in:Makefile.dep])
> +AC_OUTPUT
>  END
>  
> -: > Makefile.am
>  : > Makefile.dep
>  
> +cat > Makefile.am <<'END'
> +.PHONY: test
> +test:
> +     case ' $(DIST_COMMON) ' in \
> +       *' $(srcdir)/Makefile.dep '*) exit 0;; \

Hmm.  The variable might just as validly list Makefile.dep, without
preceding `$(srcdir)/'.  That is really necessary only if the file is
listed both as a prerequisite and as a target somewhere in the makefile.

> +       *) exit 1;; \
> +     esac
> +END
> +
>  $ACLOCAL
>  $AUTOMAKE
>  
> -grep 'Makefile:Makefile.in' Makefile.in
> +grep 'Makefile:Makefile\.in' Makefile.in
> +grep '^Makefile:.* \$(srcdir)/Makefile\.dep' Makefile.in
> +
> +sed '/@SET_MAKE@/d' <Makefile.in >Makefile.sed
> +$MAKE -f Makefile.sed SHELL=$SHELL test

I see this idiom is used a couple of times in the testsuite.  How come?
Because running ./configure is a bit more expensive than sed?

Thanks,
Ralf



reply via email to

[Prev in Thread] Current Thread [Next in Thread]