diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2011-02-01 23:22:08 +0100 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2011-02-06 18:33:33 +0100 |
commit | 6366a170d89eaaf6c3f119dc999035eb7d5a5800 (patch) | |
tree | 5caed4275cd445f7fca748acb9f555ef2860271b | |
parent | e12be9450726e26136a6bc64f7df47ced18f6671 (diff) | |
download | automake-6366a170d89eaaf6c3f119dc999035eb7d5a5800.tar.gz |
python: extend and improve tests, fix minor glitches
* m4/python.m4 (AM_PATH_PYTHON): Ensure the "checking ..." messages
from configure are always complete, even in case of failure. Tiny
cosmetic improvement in info/error messages.
* tests/python.test: Also check that automake complains if the
PYTHON primary is used but the `py-compile' script is not present.
Make grepping of generated Makefile.in laxer w.r.t. whitespace.
Add trailing `:' command.
* tests/python2.test: Remove repeated calls aclocal: they are
useless because configure.in is never modified. Make grepping
of automake stderr more comprehensive. Remove the pre-existing
`py-compile' file before trying to install it with `--add-missing'.
Add trailing `:' command.
* tests/python3.test: Add trailing `:' command.
* tests/python11.test: Likewise.
* tests/python4.test: Likewise. Also, try to pass PYTHON config
variable to configure from the environment, rather than only from
the command line.
* tests/python5.test: Ensure that the "checking ..." messages from
configure are always complete. Use proper m4 quoting. Add a
trailing `:' command.
* tests/python6.test: Simplify test logic, by checking for files
created by configure rather then grepping its output.
* tests/python7.test: Likewise.
* tests/python8.test: Also check that `$PYTHON' is meaningfully
set in the ACTION-IF-TRUE argument of AM_PATH_PYTHON.
* tests/python9.test: Likewise.
* tests/python10.test: Add trailing `:' command.
(Makefile.am): Declare `disttest' target as `.PHONY', and add
an `ls -l' to its recipe, for debugging.
* tests/nobase-python.test: In testing "make uninstall" and
"make install" results, prefer idioms that make verbose logs
more helpful. Remove a couple of lines of dead code. Add a
trailing `:' command.
* tests/python5b.test: New test, checking that configure performs
the check on the python version even when the choice of the python
interpreter is forced by the user.
* tests/python-dist.test: New test, checking the distribution of
*_PYTHON files.
* tests/python-vars.test: New test, checking that AM_PATH_PYTHON
correctly set all the output variables advertised in the manual.
* tests/python-virtualenv.test: New test, checking that python
support offered by automake works well with "virtual python
environments" created by the `virtualenv' program.
* tests/instdir-prog.test: Also check `$(pyexecdir)'. Existing
checks made slightly stricter.
* tests/instdir-prog.test: Also check `$(pyexecdir)'. Existing
* tests/instdir-ltlib.test: Likewise.
* tests/Makefile.am (TESTS): Update.
-rw-r--r-- | ChangeLog | 52 | ||||
-rw-r--r-- | m4/python.m4 | 5 | ||||
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/Makefile.in | 4 | ||||
-rwxr-xr-x | tests/instdir-ltlib.test | 26 | ||||
-rwxr-xr-x | tests/instdir-prog.test | 26 | ||||
-rwxr-xr-x | tests/nobase-python.test | 12 | ||||
-rwxr-xr-x | tests/python-dist.test | 80 | ||||
-rwxr-xr-x | tests/python-vars.test | 93 | ||||
-rwxr-xr-x | tests/python-virtualenv.test | 183 | ||||
-rwxr-xr-x | tests/python.test | 11 | ||||
-rwxr-xr-x | tests/python10.test | 6 | ||||
-rwxr-xr-x | tests/python11.test | 4 | ||||
-rwxr-xr-x | tests/python2.test | 19 | ||||
-rwxr-xr-x | tests/python3.test | 4 | ||||
-rwxr-xr-x | tests/python4.test | 9 | ||||
-rwxr-xr-x | tests/python5.test | 14 | ||||
-rwxr-xr-x | tests/python5b.test | 55 | ||||
-rwxr-xr-x | tests/python6.test | 11 | ||||
-rwxr-xr-x | tests/python7.test | 9 | ||||
-rwxr-xr-x | tests/python8.test | 12 | ||||
-rwxr-xr-x | tests/python9.test | 14 |
22 files changed, 589 insertions, 64 deletions
@@ -1,3 +1,55 @@ +2011-02-06 Stefano Lattarini <stefano.lattarini@gmail.com> + + python: extend and improve tests, fix minor glitches + * m4/python.m4 (AM_PATH_PYTHON): Ensure the "checking ..." messages + from configure are always complete, even in case of failure. Tiny + cosmetic improvement in info/error messages. + * tests/python.test: Also check that automake complains if the + PYTHON primary is used but the `py-compile' script is not present. + Make grepping of generated Makefile.in laxer w.r.t. whitespace. + Add trailing `:' command. + * tests/python2.test: Remove repeated calls aclocal: they are + useless because configure.in is never modified. Make grepping + of automake stderr more comprehensive. Remove the pre-existing + `py-compile' file before trying to install it with `--add-missing'. + Add trailing `:' command. + * tests/python3.test: Add trailing `:' command. + * tests/python11.test: Likewise. + * tests/python4.test: Likewise. Also, try to pass PYTHON config + variable to configure from the environment, rather than only from + the command line. + * tests/python5.test: Ensure that the "checking ..." messages from + configure are always complete. Use proper m4 quoting. Add a + trailing `:' command. + * tests/python6.test: Simplify test logic, by checking for files + created by configure rather then grepping its output. + * tests/python7.test: Likewise. + * tests/python8.test: Also check that `$PYTHON' is meaningfully + set in the ACTION-IF-TRUE argument of AM_PATH_PYTHON. + * tests/python9.test: Likewise. + * tests/python10.test: Add trailing `:' command. + (Makefile.am): Declare `disttest' target as `.PHONY', and add + an `ls -l' to its recipe, for debugging. + * tests/nobase-python.test: In testing "make uninstall" and + "make install" results, prefer idioms that make verbose logs + more helpful. Remove a couple of lines of dead code. Add a + trailing `:' command. + * tests/python5b.test: New test, checking that configure performs + the check on the python version even when the choice of the python + interpreter is forced by the user. + * tests/python-dist.test: New test, checking the distribution of + *_PYTHON files. + * tests/python-vars.test: New test, checking that AM_PATH_PYTHON + correctly set all the output variables advertised in the manual. + * tests/python-virtualenv.test: New test, checking that python + support offered by automake works well with "virtual python + environments" created by the `virtualenv' program. + * tests/instdir-prog.test: Also check `$(pyexecdir)'. Existing + checks made slightly stricter. + * tests/instdir-prog.test: Also check `$(pyexecdir)'. Existing + * tests/instdir-ltlib.test: Likewise. + * tests/Makefile.am (TESTS): Update. + 2011-02-01 Stefano Lattarini <stefano.lattarini@gmail.com> coverage: more tests on simple and parallel test drivers diff --git a/m4/python.m4 b/m4/python.m4 index 50e15384b..c341d5ce3 100644 --- a/m4/python.m4 +++ b/m4/python.m4 @@ -51,10 +51,11 @@ AC_DEFUN([AM_PATH_PYTHON], dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. - AC_MSG_CHECKING([whether $PYTHON version >= $1]) + AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT(yes)], - [AC_MSG_ERROR(too old)]) + [AC_MSG_RESULT(no) + AC_MSG_ERROR(Python interpreter is too old)]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies diff --git a/tests/Makefile.am b/tests/Makefile.am index c9f846753..624d5b0d9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -620,6 +620,7 @@ python2.test \ python3.test \ python4.test \ python5.test \ +python5b.test \ python6.test \ python7.test \ python8.test \ @@ -627,6 +628,9 @@ python9.test \ python10.test \ python11.test \ python12.test \ +python-dist.test \ +python-vars.test \ +python-virtualenv.test \ recurs.test \ recurs2.test \ remake.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 137046140..5a039b48c 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -890,6 +890,7 @@ python2.test \ python3.test \ python4.test \ python5.test \ +python5b.test \ python6.test \ python7.test \ python8.test \ @@ -897,6 +898,9 @@ python9.test \ python10.test \ python11.test \ python12.test \ +python-dist.test \ +python-vars.test \ +python-virtualenv.test \ recurs.test \ recurs2.test \ remake.test \ diff --git a/tests/instdir-ltlib.test b/tests/instdir-ltlib.test index 1fb4f37a8..b9fbed2d8 100755 --- a/tests/instdir-ltlib.test +++ b/tests/instdir-ltlib.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2009 Free Software Foundation, Inc. +# Copyright (C) 2009, 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 @@ -14,7 +14,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# If $(libdir) is the empty string, then nothing should be installed there. +# If $(libdir) or $(pyexecdir) is the empty string, then nothing should +# be installed there. # This test exercises the libtool code paths. required=libtoolize @@ -26,6 +27,7 @@ cat >>configure.in <<'END' AC_PROG_CC AM_PROG_CC_C_O AC_PROG_LIBTOOL +AM_PATH_PYTHON AC_OUTPUT END @@ -37,6 +39,8 @@ bin_PROGRAMS = p nobase_bin_PROGRAMS = np sub/np lib_LTIBRARIES = libfoo.la nobase_lib_LTLIBRARIES = libnfoo.la sub/libnfoo.la +pyexec_LTIBRARIES = libpy.la +nobase_pyexec_LTLIBRARIES = libnpy.la sub/libnpy.la END cat >p.c <<'END' @@ -47,6 +51,9 @@ cp p.c sub/np.c cp p.c libfoo.c cp p.c libnfoo.c cp p.c sub/libnfoo.c +cp p.c libpy.c +cp p.c libnpy.c +cp p.c sub/libnpy.c libtoolize $ACLOCAL @@ -57,11 +64,13 @@ instdir=`pwd`/inst destdir=`pwd`/dest mkdir build cd build -../configure --prefix="$instdir" +../configure --prefix="$instdir" PYTHON="echo" \ + am_cv_python_pythondir="$instdir/python" \ + am_cv_python_pyexecdir="$instdir/pyexec" $MAKE -bindir= libdir= -export bindir libdir +bindir= libdir= pyexecdir= +export bindir libdir pyexecdir $MAKE -e install test ! -d "$instdir" $MAKE -e install DESTDIR="$destdir" @@ -69,6 +78,9 @@ test ! -d "$instdir" test ! -d "$destdir" $MAKE -e uninstall > stdout || { cat stdout; Exit 1; } cat stdout -grep 'rm -f' stdout && Exit 1 -$MAKE -e uninstall DESTDIR="$destdir" +grep 'rm ' stdout && Exit 1 +$MAKE -e uninstall DESTDIR="$destdir" > stdout || { cat stdout; Exit 1; } +cat stdout +grep 'rm ' stdout && Exit 1 + : diff --git a/tests/instdir-prog.test b/tests/instdir-prog.test index 6a73b7572..edd7c913b 100755 --- a/tests/instdir-prog.test +++ b/tests/instdir-prog.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2009 Free Software Foundation, Inc. +# Copyright (C) 2009, 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 @@ -14,7 +14,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# If $(bindir) is the empty string, then nothing should be installed there. +# If $(bindir), $(libdir) or $(pyexecdir) is the empty string, then +# nothing should be installed there. # This test exercises the prog and libs code paths. . ./defs || Exit 1 @@ -25,6 +26,7 @@ cat >>configure.in <<'END' AC_PROG_CC AM_PROG_CC_C_O AC_PROG_RANLIB +AM_PATH_PYTHON AC_OUTPUT END @@ -36,6 +38,8 @@ bin_PROGRAMS = p nobase_bin_PROGRAMS = np sub/np lib_LIBRARIES = libfoo.a nobase_lib_LIBRARIES = libnfoo.a sub/libnfoo.a +pyexec_PROGRAMS = py +nobase_pyexec_PROGRAMS = npy sub/npy END cat >p.c <<'END' @@ -46,6 +50,9 @@ cp p.c sub/np.c cp p.c libfoo.c cp p.c libnfoo.c cp p.c sub/libnfoo.c +cp p.c py.c +cp p.c npy.c +cp p.c sub/npy.c $ACLOCAL $AUTOCONF @@ -55,11 +62,13 @@ instdir=`pwd`/inst destdir=`pwd`/dest mkdir build cd build -../configure --prefix="$instdir" +../configure --prefix="$instdir" PYTHON="echo" \ + am_cv_python_pythondir="$instdir/python" \ + am_cv_python_pyexecdir="$instdir/pyexec" $MAKE -bindir= libdir= -export bindir libdir +bindir= libdir= pyexecdir= +export bindir libdir pyexecdir $MAKE -e install test ! -d "$instdir" $MAKE -e install DESTDIR="$destdir" @@ -67,6 +76,9 @@ test ! -d "$instdir" test ! -d "$destdir" $MAKE -e uninstall > stdout || { cat stdout; Exit 1; } cat stdout -grep 'rm -f' stdout && Exit 1 -$MAKE -e uninstall DESTDIR="$destdir" +grep 'rm ' stdout && Exit 1 +$MAKE -e uninstall DESTDIR="$destdir" > stdout || { cat stdout; Exit 1; } +cat stdout +grep 'rm ' stdout && Exit 1 + : diff --git a/tests/nobase-python.test b/tests/nobase-python.test index db5b83076..c353019fc 100755 --- a/tests/nobase-python.test +++ b/tests/nobase-python.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2008 Free Software Foundation, Inc. +# Copyright (C) 2008, 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 @@ -32,6 +32,7 @@ my_PYTHON = one.py sub/base.py nobase_my_PYTHON = two.py sub/nobase.py test-install-data: install-data + find inst -print; : for debugging test -f inst/my/one.py test -f inst/my/one.pyc test -f inst/my/two.py @@ -55,16 +56,13 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -mkdir inst -inst=`pwd`/inst - ./configure --prefix "`pwd`/inst" --program-prefix=p $MAKE $MAKE test-install-data $MAKE uninstall -test `find inst/my -type f -print | wc -l` = 0 +find inst/my -type f -print | grep . && Exit 1 $MAKE install-strip @@ -78,4 +76,6 @@ cd build $MAKE $MAKE test-install-data $MAKE uninstall -test `find inst/my -type f -print | wc -l` = 0 +find inst/my -type f -print | grep . && Exit 1 + +: diff --git a/tests/python-dist.test b/tests/python-dist.test new file mode 100755 index 000000000..fbf3ca568 --- /dev/null +++ b/tests/python-dist.test @@ -0,0 +1,80 @@ +#! /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 distribution of *_PYTHON files. + +# This test does not require python. +. ./defs || Exit 1 + +set -e + +cat >> configure.in << 'END' +AM_PATH_PYTHON([], [:], [:]) +AC_OUTPUT +END + +cat > Makefile.am << 'END' +python_PYTHON = python.py +dist_python_PYTHON = python-dist.py +nodist_python_PYTHON = python-nodist.py + +pkgpython_PYTHON = pkgpython.py +dist_pkgpython_PYTHON = pkgpython-dist.py +nodist_pkgpython_PYTHON = pkgpython-nodist.py + +mydir = $(prefix)/my +my_PYTHON = my.py +dist_my_PYTHON = my-dist.py +nodist_my_PYTHON = my-nodist.py + +my.py my-dist.py my-nodist.py: + : > $@ + +.PHONY: disttest +disttest: distdir + ls -l $(distdir) + test -f $(distdir)/python.py + test -f $(distdir)/python-dist.py + test ! -f $(distdir)/python-nodist.py + test -f $(distdir)/pkgpython.py + test -f $(distdir)/pkgpython-dist.py + test ! -f $(distdir)/pkgpython-nodist.py + test -f $(distdir)/my.py + test -f $(distdir)/my-dist.py + test ! -f $(distdir)/my-nodist.py +END + +: > python.py +: > python-dist.py +: > python-nodist.py + +: > pkgpython.py +: > pkgpython-dist.py +: > pkgpython-nodist.py + +: > py-compile + +$ACLOCAL +$AUTOCONF +$AUTOMAKE + +./configure + +$MAKE disttest +# It's not distributed, hence it shouldn't be needlessly generated. +test ! -f my-nodist.py + +: diff --git a/tests/python-vars.test b/tests/python-vars.test new file mode 100755 index 000000000..ad263a572 --- /dev/null +++ b/tests/python-vars.test @@ -0,0 +1,93 @@ +#! /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/>. + +# Check that AM_PATH_PYTHON correctly sets all the output variables +# advertised in the manual. + +required=python +. ./defs || Exit 1 + +set -e + +PYTHON=python + +# Update these if the documentation changes. +PYTHON_VERSION=`$PYTHON -c 'import sys; print(sys.version[:3])'` || Exit 1 +PYTHON_PLATFORM=`$PYTHON -c 'import sys; print(sys.platform)'` || Exit 1 +PYTHON_EXEC_PREFIX='${exec_prefix}' +PYTHON_PREFIX='${prefix}' +pythondir="\${prefix}/lib/python$PYTHON_VERSION/site-packages" +pyexecdir="\${exec_prefix}/lib/python$PYTHON_VERSION/site-packages" +pkgpythondir="\${pythondir}/$me" +pkgpyexecdir="\${pyexecdir}/$me" + +pyvars='PYTHON_VERSION PYTHON_PLATFORM PYTHON_PREFIX PYTHON_EXEC_PREFIX + pythondir pyexecdir pkgpythondir pkgpyexecdir' + +cat >> configure.in << 'END' +AC_CONFIG_FILES([vars-got]) +AM_PATH_PYTHON +AC_OUTPUT +END + +cat > my.py << 'END' +def my(): + return 1 +END + +cat > Makefile.am << 'END' + +python_PYTHON = my.py + +EXTRA_DIST = vars-exp + +check-local: test-in test-am +.PHONY: test-in test-am + +test-in: + cat $(srcdir)/vars-exp + cat $(builddir)/vars-got + diff $(srcdir)/vars-exp $(builddir)/vars-got +END + +echo > vars-exp +echo > vars-got.in +echo test-am: >> Makefile.am + +for var in $pyvars; do + eval val=\$$var + (echo "### $var ###" && echo "$val" && echo) >> vars-exp + (echo "### $var ###" && echo "@$var@" && echo) >> vars-got.in + echo "${tab}test x'\$($var)' = x'$val'" >> Makefile.am +done + +cat Makefile.am +cat vars-got.in + +$ACLOCAL +$AUTOMAKE --add-missing + +for var in $pyvars; do + grep "^$var *=" Makefile.in +done + +$AUTOCONF +./configure PYTHON="$PYTHON" + +$MAKE test-in test-am +$MAKE distcheck + +: diff --git a/tests/python-virtualenv.test b/tests/python-virtualenv.test new file mode 100755 index 000000000..478a8dc3e --- /dev/null +++ b/tests/python-virtualenv.test @@ -0,0 +1,183 @@ +#! /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/>. + +# Check that python support can work well with virtualenvs. +# This test also works as a mild stress-test on the python support. + +required=virtualenv +. ./defs || Exit 1 + +set -e + +# Skip the test if a proper virtualenv cannot be created. +virtualenv --verbose virtenv || Exit 77 +test -f virtenv/bin/activate || Exit 77 + +# Activate the virtualenv. +. ./virtenv/bin/activate +# Sanity check. +test -n "$VIRTUAL_ENV" || Exit 99 + +cwd=`pwd` +py_version=`python -c 'import sys; print("%u.%u" % tuple(sys.version_info[:2]))'` +py_site=$VIRTUAL_ENV/lib/python$py_version/site-packages + +# We need control over the package name. +cat > configure.in << END +AC_INIT([am_virtenv], [1.0]) +AM_INIT_AUTOMAKE +AC_CONFIG_FILES([Makefile]) +AC_SUBST([MY_VIRTENV], ['$cwd/virtenv']) +AC_PROG_CC +AC_PROG_RANLIB +AM_PATH_PYTHON +AC_OUTPUT +END + +cat > Makefile.am << 'END' +python_PYTHON = am_foo.py +pkgpython_PYTHON = __init__.py +pyexec_LIBRARIES = libquux.a +libquux_a_SOURCES = foo.c +pkgpyexec_LIBRARIES = libzardoz.a +libzardoz_a_SOURCES = foo.c + +py_site = $(MY_VIRTENV)/lib/python$(PYTHON_VERSION)/site-packages + +.PYTHON: debug test-run test-install test-uninstall +debug: + @echo PYTHON: $(PYTHON) + @echo PYTHON_VERSION: $(PYTHON_VERSION) + @echo prefix: $(prefix) + @echo pythondir: $(pythondir) + @echo pkgpythondir: $(pkgpythondir) + @echo pyexecdir: $(pyexecdir) + @echo pkgpyexecdir: $(pkgpyexecdir) +test-run: + ## In a virtualenv, the default python must be the custom + ## virtualenv python. + @: \ + && py1=`python -c 'import sys; print(sys.executable)'` \ + && py2=`$(PYTHON) -c 'import sys; print(sys.executable)'` \ + && echo "py1: $$py1" \ + && echo "py2: $$py2" \ + && test -n "$$py1" \ + && test -n "$$py2" \ + && test x"$$py1" = x"$$py2" + ## Check that modules installed in the virtualenv are readily + ## available. + python -c 'from am_foo import foo_func; assert (foo_func () == 12345)' + python -c 'from am_virtenv import old_am; assert (old_am () == "AutoMake")' +test-install: + test -f $(py_site)/am_foo.py + test -f $(py_site)/am_foo.pyc + test -f $(py_site)/am_foo.pyo + test -f $(py_site)/am_virtenv/__init__.py + test -f $(py_site)/am_virtenv/__init__.pyc + test -f $(py_site)/am_virtenv/__init__.pyo + test -f $(py_site)/libquux.a + test -f $(py_site)/am_virtenv/libzardoz.a +test-uninstall: + test ! -f $(py_site)/am_foo.py + test ! -f $(py_site)/am_foo.pyc + test ! -f $(py_site)/am_foo.pyo + test ! -f $(py_site)/am_virtenv/__init__.py + test ! -f $(py_site)/am_virtenv/__init__.pyc + test ! -f $(py_site)/am_virtenv/__init__.pyo + test ! -f $(py_site)/libquux.a + test ! -f $(py_site)/am_virtenv/libzardoz.a +all-local: debug +END + +cat > am_foo.py << 'END' +def foo_func (): + return 12345 +END + +cat > __init__.py << 'END' +def old_am (): + return 'AutoMake' +END + +cat > foo.c << 'END' +int foo (void) +{ + return 0; +} +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE --add-missing + +# Try a VPATH build. +mkdir build +cd build +../configure --prefix="$VIRTUAL_ENV" +$MAKE install +$MAKE test-install +$MAKE test-run +$MAKE uninstall +$MAKE test-uninstall +cd .. + +# Try an in-tree build. +./configure --prefix="$VIRTUAL_ENV" +$MAKE install +$MAKE test-install +$MAKE test-run +$MAKE uninstall +$MAKE test-uninstall + +$MAKE distclean + +# Overriding pythondir and pyexecdir with cache variables should work. +./configure am_cv_python_pythondir="$py_site" \ + am_cv_python_pyexecdir="$py_site" +$MAKE install +$MAKE test-install +$MAKE test-run +$MAKE uninstall +$MAKE test-uninstall + +$MAKE distclean + +# Overriding pythondir and pyexecdir at make time should be enough. +./configure --prefix="$cwd/bad-prefix" +pythondir=$py_site pyexecdir=$py_site +export pythondir pyexecdir +$MAKE -e install +test ! -d bad-prefix +$MAKE -e test-install +$MAKE test-run +$MAKE -e uninstall +$MAKE -e test-uninstall +unset pythondir pyexecdir + +# Also check that the distribution is self-contained, for completeness. +$MAKE distcheck + +# Finally, check that if we disable the virtualenv, we shouldn't be +# able to access to the installed modules anymore. +cd build +$MAKE install +python -c 'import am_foo; print(am_foo.__file__)' +python -c 'import am_virtenv; print(am_virtenv.__file__)' +deactivate "nondestructive" +python -c 'import am_foo' && Exit 1 +python -c 'import am_virtenv' && Exit 1 + +: diff --git a/tests/python.test b/tests/python.test index 8102ca002..e44ceb533 100755 --- a/tests/python.test +++ b/tests/python.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 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 @@ -27,7 +27,12 @@ python_PYTHON = foo.py END $ACLOCAL -$AUTOMAKE -a -grep '^py_compile =' Makefile.in +AUTOMAKE_fails +grep '^Makefile\.am:1:.* required file.*py-compile' stderr + +$AUTOMAKE -a +grep '^py_compile *=' Makefile.in test -f py-compile + +: diff --git a/tests/python10.test b/tests/python10.test index ff0ee151a..16566fcca 100755 --- a/tests/python10.test +++ b/tests/python10.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2004, 2007 Free Software Foundation, Inc. +# Copyright (C) 2004, 2007, 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 @@ -41,7 +41,9 @@ one.py: two.py: echo 'def two(): return 1' >$@ +.PHONY: disttest disttest: distdir + ls -l $(distdir) test -f $(distdir)/one.py test -f $(distdir)/two.py END @@ -81,3 +83,5 @@ test ! -f "$inst/my/one.pyc" test ! -f "$inst/my/one.pyo" $MAKE disttest + +: diff --git a/tests/python11.test b/tests/python11.test index 0f15f375f..f0386be44 100755 --- a/tests/python11.test +++ b/tests/python11.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2004, 2006, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004, 2006, 2008, 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 @@ -53,3 +53,5 @@ $AUTOCONF ./configure PYTHON=foo >stdout && { cat stdout; Exit 1; } cat stdout grep 'PYTHON = foo' stdout + +: diff --git a/tests/python2.test b/tests/python2.test index 3e14fa2b5..d2ace1f42 100755 --- a/tests/python2.test +++ b/tests/python2.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2002, 2003, 2010 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2010, 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 @@ -20,6 +20,8 @@ set -e +$ACLOCAL + echo 1. pythondir not defined @@ -28,8 +30,8 @@ PYTHON = x python_PYTHON = foo.py END -$ACLOCAL AUTOMAKE_fails -a +grep 'pythondir.*undefined' stderr grep AM_PATH_PYTHON stderr @@ -40,8 +42,8 @@ PYTHON = x pkgpython_PYTHON = foo.py END -$ACLOCAL AUTOMAKE_fails -a +grep 'pkgpythondir.*undefined' stderr grep AM_PATH_PYTHON stderr @@ -52,8 +54,8 @@ PYTHON = x pyexec_PYTHON = foo.py END -$ACLOCAL AUTOMAKE_fails -a +grep 'pyexecdir.*undefined' stderr grep AM_PATH_PYTHON stderr @@ -64,8 +66,8 @@ PYTHON = x pkgpyexec_PYTHON = foo.py END -$ACLOCAL AUTOMAKE_fails -a +grep 'pkgpyexecdir.*undefined' stderr grep AM_PATH_PYTHON stderr @@ -76,8 +78,8 @@ pkgpyexecdir = /here/we/go pkgpyexec_PYTHON = foo.py END -$ACLOCAL AUTOMAKE_fails -a +grep 'PYTHON.*undefined' stderr grep AM_PATH_PYTHON stderr @@ -89,7 +91,7 @@ pkgpyexecdir = /here/we/go pkgpyexec_PYTHON = foo.py END -$ACLOCAL +rm -f py-compile $AUTOMAKE -a test -f py-compile @@ -102,5 +104,6 @@ fubardir = /here/we/go fubar_PYTHON = foo.py END -$ACLOCAL $AUTOMAKE -a + +: diff --git a/tests/python3.test b/tests/python3.test index f01ad3108..91e398931 100755 --- a/tests/python3.test +++ b/tests/python3.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2002, 2007 Free Software Foundation, Inc. +# Copyright (C) 2002, 2007, 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 @@ -47,3 +47,5 @@ $MAKE install test -f "$inst/my/one.py" test -f "$inst/my/one.pyc" test -f "$inst/my/one.pyo" + +: diff --git a/tests/python4.test b/tests/python4.test index 11bb3ed84..b201e0596 100755 --- a/tests/python4.test +++ b/tests/python4.test @@ -32,7 +32,14 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -# Simulate no Python +# Simulate no Python. ./configure PYTHON=: 2>stderr && { cat stderr >&2; Exit 1; } cat stderr >&2 grep 'no suitable Python interpreter found' stderr + +# Again, but from the environment this time. +env PYTHON=: ./configure 2>stderr && { cat stderr >&2; Exit 1; } +cat stderr >&2 +grep 'no suitable Python interpreter found' stderr + +: diff --git a/tests/python5.test b/tests/python5.test index 86f586341..a4c2b4031 100755 --- a/tests/python5.test +++ b/tests/python5.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2003, 2008 Free Software Foundation, Inc. +# Copyright (C) 2003, 2008, 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 @@ -24,7 +24,7 @@ set -e cat >>configure.in <<EOF # Hopefully the Python team will never release such a version. -AM_PATH_PYTHON(9999.9) +AM_PATH_PYTHON([9999.9]) AC_OUTPUT EOF @@ -34,6 +34,14 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -./configure 2>stderr && { cat stderr >&2; Exit 1; } +./configure >stdout 2>stderr && { + cat stdout + cat stderr >&2 + Exit 1 +} +cat stdout cat stderr >&2 +$EGREP 'checking for a Python interpreter with version >= 9999\.9\.\.\. no(ne)? *$' stdout grep 'no suitable Python interpreter found' stderr + +: diff --git a/tests/python5b.test b/tests/python5b.test new file mode 100755 index 000000000..7f77cda5d --- /dev/null +++ b/tests/python5b.test @@ -0,0 +1,55 @@ +#! /bin/sh +# Copyright (C) 2003, 2008, 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 detection of missing Python. +# Same as python5.test, but with the user forcing the python to use. + +required=python +. ./defs || Exit 1 + +set -e + +cat >>configure.in << 'END' +# Hopefully the Python team will never release such a version. +AM_PATH_PYTHON([9999.9]) +AC_OUTPUT +END + +mkdir bin +cat > bin/my-python << 'END' +#! /bin/sh +exec python ${1+"$@"} +END +chmod a+x bin/my-python +PATH=`pwd`/bin:$PATH_SEPARATOR$PATH + +: > Makefile.am + +$ACLOCAL +$AUTOCONF +$AUTOMAKE --add-missing + +./configure PYTHON=my-python >stdout 2>stderr && { + cat stdout + cat stderr >&2 + Exit 1 +} +cat stdout +cat stderr >&2 +grep 'whether my-python version is >= 9999\.9\.\.\. no *$' stdout +grep '[Pp]ython interpreter is too old' stderr + +: diff --git a/tests/python6.test b/tests/python6.test index 86dcfbba7..117448aea 100755 --- a/tests/python6.test +++ b/tests/python6.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2003, 2010 Free Software Foundation, Inc. +# Copyright (C) 2003, 2010, 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 @@ -23,7 +23,7 @@ set -e cat >>configure.in <<\EOF -AM_PATH_PYTHON(,, [echo "GREP ME$PYTHON" >&2]) +AM_PATH_PYTHON(,, [echo "$PYTHON" > py]) AC_OUTPUT EOF @@ -33,9 +33,8 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -# Simulate no Python -./configure PYTHON=: 2>stderr || { cat stderr >&2; Exit 1; } -cat stderr >&2 -grep 'GREP ME:' stderr +# Simulate no Python. +./configure PYTHON=: +test x"`cat py`" = x: : diff --git a/tests/python7.test b/tests/python7.test index 27b2e7966..b74dc9b2b 100755 --- a/tests/python7.test +++ b/tests/python7.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2003, 2010 Free Software Foundation, Inc. +# Copyright (C) 2003, 2010, 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 @@ -24,7 +24,7 @@ set -e cat >>configure.in <<\EOF # Hopefully the Python team will never release such a version. -AM_PATH_PYTHON(9999.9,, [echo "GREP ME$PYTHON" >&2]) +AM_PATH_PYTHON([9999.9], [], [echo "$PYTHON" > py]) AC_OUTPUT EOF @@ -34,8 +34,7 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -./configure 2>stderr || { cat stderr >&2; Exit 1; } -cat stderr >&2 -grep 'GREP ME:' stderr +./configure +test x"`cat py`" = x: : diff --git a/tests/python8.test b/tests/python8.test index 51d02ad9b..cd87a5178 100755 --- a/tests/python8.test +++ b/tests/python8.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2003, 2010 Free Software Foundation, Inc. +# Copyright (C) 2003, 2010, 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 @@ -21,8 +21,9 @@ required=python set -e -cat >>configure.in <<EOF -AM_PATH_PYTHON(, [echo 'GREP ME' >&2]) +cat >>configure.in <<'EOF' +# $PYTHON is supposed to be properly set in ACTION-IF-TRUE. +AM_PATH_PYTHON(, [$PYTHON -V >py-version 2>&1]) AC_OUTPUT EOF @@ -32,8 +33,7 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -./configure 2>stderr || { cat stderr >&2; Exit 1; } -cat stderr >&2 -grep 'GREP ME' stderr +./configure +grep '^Python [0-9]\.[0-9][0-9]*\.[0-9]' py-version : diff --git a/tests/python9.test b/tests/python9.test index 6a91e9fee..71588f8bf 100755 --- a/tests/python9.test +++ b/tests/python9.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2003, 2010 Free Software Foundation, Inc. +# Copyright (C) 2003, 2010, 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 @@ -15,15 +15,16 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # Test ACTION-IF-TRUE in AM_PATH_PYTHON. -# Same as python8.test, but requiring a version. +# Similar to python8.test, but requiring a version. required=python . ./defs || Exit 1 set -e -cat >>configure.in <<EOF -AM_PATH_PYTHON(0.0, [echo 'GREP ME' >&2]) +cat >>configure.in <<'EOF' +# $PYTHON is supposed to be properly set in ACTION-IF-TRUE. +AM_PATH_PYTHON([0.0], [$PYTHON -c 'print("%u:%u" % (1-1, 2**0))' > py.out]) AC_OUTPUT EOF @@ -33,8 +34,7 @@ $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing -./configure 2>stderr || { cat stderr >&2; Exit 1; } -cat stderr >&2 -grep 'GREP ME' stderr +./configure +test x"`cat py.out`" = x0:1 : |