[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] {testsuite-work} tests: new test dedicated to `--add-missing
From: |
Stefano Lattarini |
Subject: |
Re: [PATCH] {testsuite-work} tests: new test dedicated to `--add-missing' and `--copy' (was: Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/') |
Date: |
Fri, 10 Jun 2011 17:54:50 +0200 |
User-agent: |
KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; ) |
On Wednesday 08 June 2011, Stefano Lattarini wrote:
> On Tuesday 07 June 2011, Stefano Lattarini wrote:
> > On Tuesday 07 June 2011, Stefano Lattarini wrote:
> > > On Tuesday 07 June 2011, Peter Rosin wrote:
> > > > >> This test no longer checks if $AUTOMAKE -a copies over compile, as
> > > > >> that is done manually now. I assume this aspect of $AUTOMAKE -a is
> > > > >> tested elsewhere. Or is it?
> > > > >>
> > > > > Yes, in 'subobj.test'.
> > > >
> > > > The same argument could be made about the other instances where the
> > > > script is brought in explicitly. Seems like a bit of a fluke that
> > > > subobj.test covered the compile script.
> > > >
> > > Agreed. I now think we should have a centralized test where to check
> > > for files installed with `--add-missing', not to risk reduced coverage
> > > anymore. Patch coming up soon ...
> > >
> > Done in the attached patch. It is more complex than I'd like, so I'll
> > wait until sunday or so before pushing, to allow more time for reviews.
> >
> > Regards,
> > Stefano
> >
> A couple of minor fixes I'd like to squash in. First, a typofix in a
> comment; second, an internal sanity check looking out for bogus input
> passed to the `check_' subroutine.
>
> Regards,
> Stefano
>
> -*-*-*-
>
> diff --git a/tests/add-missing.test b/tests/add-missing.test
> index a8742f6..e460a95 100755
> --- a/tests/add-missing.test
> +++ b/tests/add-missing.test
> @@ -94,6 +94,7 @@ check_ ()
> '== Makefile.am ==') what=Makefile.am;;
> '== configure.in ==') what=configure.in;;
> '== Files ==') what=LIST;;
> + '==.*') framework_failure_ "invalid input line: $line";;
> ''|'#%'*)
> : empty line or ad-hoc comment, ignore;;
> *)
> @@ -210,7 +211,7 @@ check_ --run-aclocal <<'END'
> compile
> == configure.in ==
> # Using AM_PROG_CC_C_O in configure.in should be enough. No need to
> -# use AC_PROG_CC too, not to define xxx_PROGRAMS in Makefile.am.
> +# use AC_PROG_CC too, nor to define xxx_PROGRAMS in Makefile.am.
> AM_PROG_CC_C_O
> END
>
And for some reason I've forgotten to add check for config.guess and
config.sub. Sigh.
Here is what I've squashed in; the updated patch is attached, for
reference.
-*-*-
diff --git a/tests/add-missing.test b/tests/add-missing.test
index e460a95..9d6da7a 100755
--- a/tests/add-missing.test
+++ b/tests/add-missing.test
@@ -39,9 +39,12 @@ AM_INIT_AUTOMAKE
AC_CONFIG_FILES([Makefile])
END
-# Pre-compute aclocal.m4 to save a lot aclocal invocations.
+# Pre-compute aclocal.m4, in order to save several aclocal invocations.
cat >> configure.in <<'END'
AC_PROG_CC
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
AM_PATH_LISPDIR
AM_PATH_PYTHON
END
@@ -215,6 +218,18 @@ compile
AM_PROG_CC_C_O
END
+: %%% config.guess and config.sub %%%
+
+for macro in AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_CANONICAL_TARGET; do
+ check_ <<END
+== Files ==
+config.sub
+config.guess
+== configure.in ==
+$macro
+END
+done
+
: %%% ylwrap with Lex %%%
check_ <<'END'
== Files ==
-*-*-
It might also be worth noting that I haven't added check for ansi2knr.c
and ansi2knr.1; that's because the de-ansification features in automake
are expected to be removed in 1.12, being basically obsolete by now.
Regards,
Stefano
From c13dac34e870e118f36df01bc29bb8bf0d6ec625 Mon Sep 17 00:00:00 2001
Message-Id: <address@hidden>
From: Stefano Lattarini <address@hidden>
Date: Tue, 7 Jun 2011 22:49:28 +0200
Subject: [PATCH] tests: new test dedicated to `--add-missing' and `--copy'
* tests/add-missing.test: New test.
* tests/Makefile.am (TESTS): Update.
Suggested by Peter Rosin.
---
ChangeLog | 7 +
tests/Makefile.am | 1 +
tests/Makefile.in | 1 +
tests/add-missing.test | 300 ++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 309 insertions(+), 0 deletions(-)
create mode 100755 tests/add-missing.test
diff --git a/ChangeLog b/ChangeLog
index 569f44a..94f44c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-06-07 Stefano Lattarini <address@hidden>
+
+ tests: new test dedicated to `--add-missing' and `--copy'
+ * tests/add-missing.test: New test.
+ * tests/Makefile.am (TESTS): Update.
+ Suggested by Peter Rosin.
+
2011-06-02 Stefano Lattarini <address@hidden>
self tests: fix another spurious failure
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d863b28..3c157c1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -150,6 +150,7 @@ acoutbs2.test \
acsilent.test \
acsubst.test \
acsubst2.test \
+add-missing.test \
all.test \
all2.test \
alloca.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index d2975d7..0b29184 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -438,6 +438,7 @@ acoutbs2.test \
acsilent.test \
acsubst.test \
acsubst2.test \
+add-missing.test \
all.test \
all2.test \
alloca.test \
diff --git a/tests/add-missing.test b/tests/add-missing.test
new file mode 100755
index 0000000..f16da39
--- /dev/null
+++ b/tests/add-missing.test
@@ -0,0 +1,300 @@
+#! /bin/sh
+# Copyright (C) 2011 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
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test that automake complains when required auxiliary files are not
+# found, and that `automake --add-missing' installs the files (and only
+# the files) it's supposed to, and that these files are symlinked by
+# default, but copied if the `--install' option is used.
+
+. ./defs || Exit 1
+
+build_aux=build-aux
+
+# Try to improve readability of displayed diffs.
+if diff -u /dev/null /dev/null; then
+ am_diff='diff -u'
+elif diff -c /dev/null /dev/null; then
+ am_diff='diff -c'
+else
+ am_diff=diff
+fi
+
+cat > configure.stub << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([$build_aux])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+# Pre-compute aclocal.m4, in order to save several aclocal invocations.
+cat >> configure.in <<'END'
+AC_PROG_CC
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AM_PATH_LISPDIR
+AM_PATH_PYTHON
+END
+$ACLOCAL || framework_failure_ "cannot pre-compute aclocal.m4"
+
+rm -rf install-sh missing depcomp configure.in autom4te*.cache
+mv aclocal.m4 aclocal.stub
+
+cat configure.stub # For debugging.
+cat aclocal.stub # Likewise.
+
+# This is hacky and ugly and complex, but allow us to organize our tests
+# below in a more "declarative fashion". All in all, a good trade-off.
+check_ ()
+{
+ set +x # Temporary disable shell traces to remove noise from log files.
+ override=no
+ run_aclocal=no
+ extra_files=
+ while test $# -gt 0; do
+ case $1 in
+ --override) override=yes;;
+ --run-aclocal) run_aclocal=yes;;
+ --extra-file*) extra_files="$with_files $2"; shift;;
+ *) framework_failure_ "check_: invalid argument '$1'";;
+ esac
+ shift
+ done
+ mkdir testdir-generic
+ cd testdir-generic
+ : > Makefile.am
+ if test $override = yes; then
+ : > configure.in
+ else
+ cp ../configure.stub configure.in
+ fi
+ for f in $extra_files; do
+ if test -f ../$f; then
+ cp ../$f .
+ else
+ : > $f
+ fi
+ done
+ # Read description of "test scenario" from standard input.
+ what=
+ line=
+ files='install-sh missing' # These are always installed by automake.
+ while read line; do
+ case $line in
+ '== Makefile.am ==') what=Makefile.am;;
+ '== configure.in ==') what=configure.in;;
+ '== Files ==') what=LIST;;
+ '==.*') framework_failure_ "invalid input line: $line";;
+ ''|'#%'*)
+ : empty line or ad-hoc comment, ignore;;
+ *)
+ if test $what = LIST; then
+ files="$files $line"
+ else
+ printf '%s\n' "$line" >> "$what"
+ fi
+ ;;
+ esac
+ done
+ if test $run_aclocal = yes; then
+ $ACLOCAL
+ echo == aclocal.m4 ==
+ cat aclocal.m4
+ else
+ cp ../aclocal.stub aclocal.m4
+ fi
+ # For debugging.
+ if test -s Makefile.am; then
+ echo == Makefile.am ==
+ cat Makefile.am
+ fi
+ echo == configure.in ==
+ cat configure.in
+ echo Expected files: $files
+ mkdir "$build_aux"
+ cd ..
+ # End of "test scenario" setup.
+ set -x # Re-enable shell traces.
+ ls -l testdir-generic
+ # Test once with `--copy', once without.
+ for action in link copy; do
+ case $action in
+ link) opts='--add-missing' test_linked='test -h';;
+ copy) opts='-a --copy' test_linked='test ! -h';;
+ *) Exit 99;; # Can't happen.
+ esac
+ cp -R testdir-generic testdir-$action
+ cd testdir-$action
+ # If the required auxiliary files are missing, and automake is
+ # not told to install them, it should complain and error out,
+ # and also give a useful suggestion.
+ $AUTOMAKE 2>stderr && { cat stderr >&2; Exit 1; }
+ cat stderr >&2
+ for f in $files; do
+ grep "required file ['\`]$build_aux/$f' not found" stderr
+ # Suggest the user to use `--add-missing'.
+ grep ".*--add-missing.* install .*$f" stderr
+ done
+ # No files should be automatically installed by automake if it
+ # is not told to.
+ ls "$build_aux" | grep . && Exit 1
+ $AUTOMAKE $opts 2>stderr || { cat stderr >&2; Exit 1; }
+ cat stderr >&2
+ ls -l . $build_aux
+ # The expected files should get installed correctly (e.g., no
+ # broken symlinks).
+ for f in $files; do
+ test -f $build_aux/$f
+ done
+ # Automake should inform about which files it's installing.
+ for f in $files; do
+ grep ": installing ['\`]$build_aux/$f'$" stderr
+ done
+ # Only the expected files should be installed.
+ for f in $files; do echo $f; done | sort > files.exp
+ (cd $build_aux && ls) | sort > files.got
+ cat files.exp
+ cat files.got
+ $am_diff files.exp files.got
+ # The files should be copied by `--copy' and symlinked otherwise.
+ for f in $files; do
+ $test_linked $build_aux/$f
+ done
+ # Now that the required auxiliary files have been installed, automake
+ # should not complain anymore even if the `--add-missing' option is
+ # not used.
+ $AUTOMAKE
+ cd ..
+ done
+ rm -rf testdir-*
+}
+
+: %%% install-sh and missing %%%
+check_ <<'END'
+#% 'install-sh' and 'missing' should always get installed.
+END
+
+: %%% depcomp with C %%%
+check_ <<'END'
+== Files ==
+depcomp
+== configure.in ==
+AC_PROG_CC
+== Makefile.am ==
+bin_PROGRAMS = foo
+END
+
+: %%% depcomp with C++ %%%
+check_ <<'END'
+== Files ==
+depcomp
+== configure.in ==
+AC_PROG_CXX
+== Makefile.am ==
+bin_PROGRAMS = foo
+foo_SOURCES = foo.cc
+END
+
+: %%% compile script %%%
+check_ --run-aclocal <<'END'
+== Files ==
+compile
+== configure.in ==
+# Using AM_PROG_CC_C_O in configure.in should be enough. No need to
+# use AC_PROG_CC too, nor to define xxx_PROGRAMS in Makefile.am.
+AM_PROG_CC_C_O
+END
+
+: %%% config.guess and config.sub %%%
+
+for macro in AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_CANONICAL_TARGET; do
+ check_ <<END
+== Files ==
+config.sub
+config.guess
+== configure.in ==
+$macro
+END
+done
+
+: %%% ylwrap with Lex %%%
+check_ <<'END'
+== Files ==
+ylwrap
+== configure.in ==
+AC_PROG_CC
+AC_PROG_LEX
+== Makefile.am ==
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo
+foo_SOURCES = foo.l
+END
+
+: %%% ylwrap with Yacc %%%
+check_ <<'END'
+== Files ==
+ylwrap
+== configure.in ==
+AC_PROG_CC
+AC_PROG_YACC
+== Makefile.am ==
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+END
+
+: %%% texinfo.tex %%%
+echo '@setfilename foo.info' > foo.texi
+check_ --extra-file foo.texi <<'END'
+== Files ==
+texinfo.tex
+== Makefile.am ==
+info_TEXINFOS = foo.texi
+END
+
+: %%% mdate-sh and texinfo.tex %%%
+echo '@include version.texi' >> foo.texi
+check_ --extra-file foo.texi <<'END'
+== Files ==
+mdate-sh
+texinfo.tex
+== Makefile.am ==
+info_TEXINFOS = foo.texi
+END
+
+rm -f foo.texi
+
+: %%% elisp-compile %%%
+check_ <<'END'
+== Files ==
+elisp-comp
+== configure.in ==
+AM_PATH_LISPDIR
+== Makefile.am ==
+lisp_LISP = foo.el
+END
+
+: %%% py-compile %%%
+check_ <<'END'
+== Files ==
+py-compile
+== configure.in ==
+AM_PATH_PYTHON
+== Makefile.am ==
+python_PYTHON = foo.py
+END
+
+:
--
1.7.2.3
- [PATCH 1/3] {testsuite-work} tests defs: better requirements for XSI shells, (continued)
- [PATCH 1/3] {testsuite-work} tests defs: better requirements for XSI shells, Stefano Lattarini, 2011/06/06
- [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/', Stefano Lattarini, 2011/06/06
- Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/', Peter Rosin, 2011/06/07
- Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/', Stefano Lattarini, 2011/06/07
- Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/', Peter Rosin, 2011/06/07
- Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/', Stefano Lattarini, 2011/06/07
- [PATCH] {testsuite-work} tests: new test dedicated to `--add-missing' and `--copy' (was: Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/'), Stefano Lattarini, 2011/06/07
- Re: [PATCH] {testsuite-work} tests: new test dedicated to `--add-missing' and `--copy' (was: Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/'), Stefano Lattarini, 2011/06/08
- Re: [PATCH] {testsuite-work} tests: new test dedicated to `--add-missing' and `--copy' (was: Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/'),
Stefano Lattarini <=
- Re: [PATCH] {testsuite-work} tests: new test dedicated to `--add-missing' and `--copy' (was: Re: [PATCH 2/3] {testsuite-work} tests: can use also $SHELL to check shell scripts from `lib/'), Stefano Lattarini, 2011/06/12
- [PATCH] {testsuite-work} tests: extend tests on `--add-missing' and `--copy' a bit, Stefano Lattarini, 2011/06/13
- Re: [PATCH] {testsuite-work} tests: extend tests on `--add-missing' and `--copy' a bit, Stefano Lattarini, 2011/06/16
[PATCH 3/3] {testsuite-work} tests: `lib/' shell scripts transparently tested also with $SHELL, Stefano Lattarini, 2011/06/06
Re: [PATCH 3/3] {testsuite-work} tests: `lib/' shell scripts transparently tested also with $SHELL, Stefano Lattarini, 2011/06/07
[PATCH] {testsuite-work} tests: remove 'test_prefer_config_shell' from the environment (was: Re: [PATCH 3/3] {testsuite-work} tests: `lib/' shell scripts transparently tested also with $SHELL), Stefano Lattarini, 2011/06/13