summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2011-02-10 10:13:59 +0100
committerStefano Lattarini <stefano.lattarini@gmail.com>2011-02-10 10:13:59 +0100
commit6d0cfa312e825753c07fbd00aa0da5810302465f (patch)
tree7bb77e5ed47294be3362cbcdd7439d3ec60b5686 /tests
parentc383211ab93ae36b3d9485da4101852db74ce0cc (diff)
parent6366a170d89eaaf6c3f119dc999035eb7d5a5800 (diff)
downloadautomake-6d0cfa312e825753c07fbd00aa0da5810302465f.tar.gz
Merge branch 'python-tests-extend'
Conflicts: tests/Makefile.am tests/Makefile.in tests/python11.test tests/python2.test tests/python8.test tests/python9.test
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am8
-rw-r--r--tests/Makefile.in27
-rwxr-xr-xtests/check-exported-srcdir.test65
-rwxr-xr-xtests/check-tests-in-builddir.test81
-rwxr-xr-xtests/check-tests_environment.test47
-rwxr-xr-xtests/instdir-ltlib.test24
-rwxr-xr-xtests/instdir-prog.test24
-rwxr-xr-xtests/lflags.test4
-rwxr-xr-xtests/lflags2.test4
-rwxr-xr-xtests/nobase-python.test10
-rwxr-xr-xtests/parallel-tests-subdir.test51
-rwxr-xr-xtests/python-dist.test80
-rwxr-xr-xtests/python-vars.test93
-rwxr-xr-xtests/python-virtualenv.test183
-rwxr-xr-xtests/python.test9
-rwxr-xr-xtests/python10.test4
-rwxr-xr-xtests/python11.test4
-rwxr-xr-xtests/python2.test16
-rwxr-xr-xtests/python3.test2
-rwxr-xr-xtests/python4.test9
-rwxr-xr-xtests/python5.test12
-rwxr-xr-xtests/python5b.test55
-rwxr-xr-xtests/python6.test9
-rwxr-xr-xtests/python7.test7
-rwxr-xr-xtests/python8.test10
-rwxr-xr-xtests/python9.test12
26 files changed, 793 insertions, 57 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f53a1f350..2b5909d49 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -217,6 +217,9 @@ check9.test \
check10.test \
check11.test \
check12.test \
+check-exported-srcdir.test \
+check-tests-in-builddir.test \
+check-tests_environment.test \
checkall.test \
clean.test \
clean2.test \
@@ -682,6 +685,7 @@ parallel-tests8.test \
parallel-tests9.test \
parallel-tests10.test \
parallel-tests-unreadable-log.test \
+parallel-tests-subdir.test \
parse.test \
percent.test \
percent2.test \
@@ -739,6 +743,7 @@ python2.test \
python3.test \
python4.test \
python5.test \
+python5b.test \
python6.test \
python7.test \
python8.test \
@@ -746,6 +751,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 b78e5a580..1e903f4fb 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -287,13 +287,15 @@ EXTRA_DIST = ChangeLog-old gen-parallel-tests instspc-tests.sh \
XFAIL_TESTS = all.test auxdir2.test cond17.test gcj6.test \
override-conditional-2.test txinfo5.test \
$(instspc_xfail_tests)
-parallel_tests = backcompat5-p.test check-p.test check10-p.test \
- check11-p.test check12-p.test check2-p.test check3-p.test \
- check4-p.test check5-p.test check6-p.test check7-p.test \
- check8-p.test check9-p.test color-p.test color2-p.test \
- comment9-p.test dejagnu-p.test exeext4-p.test maken3-p.test \
- maken4-p.test posixsubst-tests-p.test pr401-p.test \
- pr401b-p.test pr401c-p.test
+parallel_tests = backcompat5-p.test check-exported-srcdir-p.test \
+ check-tests-in-builddir-p.test check-tests_environment-p.test \
+ check-p.test check10-p.test check11-p.test check12-p.test \
+ check2-p.test check3-p.test check4-p.test check5-p.test \
+ check6-p.test check7-p.test check8-p.test check9-p.test \
+ color-p.test color2-p.test comment9-p.test dejagnu-p.test \
+ exeext4-p.test maken3-p.test maken4-p.test \
+ posixsubst-tests-p.test pr401-p.test pr401b-p.test \
+ pr401c-p.test
instspc_tests = instspc-squote-build.test instspc-squote-install.test \
instspc-dquote-build.test instspc-dquote-install.test \
instspc-bquote-build.test instspc-bquote-install.test \
@@ -480,6 +482,9 @@ check9.test \
check10.test \
check11.test \
check12.test \
+check-exported-srcdir.test \
+check-tests-in-builddir.test \
+check-tests_environment.test \
checkall.test \
clean.test \
clean2.test \
@@ -945,6 +950,7 @@ parallel-tests8.test \
parallel-tests9.test \
parallel-tests10.test \
parallel-tests-unreadable-log.test \
+parallel-tests-subdir.test \
parse.test \
percent.test \
percent2.test \
@@ -1002,6 +1008,7 @@ python2.test \
python3.test \
python4.test \
python5.test \
+python5b.test \
python6.test \
python7.test \
python8.test \
@@ -1009,6 +1016,9 @@ python9.test \
python10.test \
python11.test \
python12.test \
+python-dist.test \
+python-vars.test \
+python-virtualenv.test \
recurs.test \
recurs2.test \
remake.test \
@@ -1579,6 +1589,9 @@ uninstall-am:
pdf-am ps ps-am recheck recheck-html uninstall uninstall-am
backcompat5-p.log: backcompat5.test
+check-exported-srcdir-p.log: check-exported-srcdir.test
+check-tests-in-builddir-p.log: check-tests-in-builddir.test
+check-tests_environment-p.log: check-tests_environment.test
check-p.log: check.test
check10-p.log: check10.test
check11-p.log: check11.test
diff --git a/tests/check-exported-srcdir.test b/tests/check-exported-srcdir.test
new file mode 100755
index 000000000..9209fc8fe
--- /dev/null
+++ b/tests/check-exported-srcdir.test
@@ -0,0 +1,65 @@
+#! /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 the "Simple Tests" driver (either with or without the
+# parallel-tests option enabled) exports the `srcdir' value in the
+# environment of the tests. This is documented in the manual.
+
+. ./defs || Exit 1
+
+set -e
+
+show_info ()
+{
+ if test x"$parallel_tests" = x"yes"; then
+ cat foo.log
+ cat test-suite.log
+ else
+ :
+ fi
+}
+
+mkdir SrcDir BuildDir
+
+mv [a-z]* SrcDir
+cd SrcDir
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+END
+
+cat > foo.test <<'END'
+#!/bin/sh
+echo "foo.test: srcdir='$srcdir'"
+test x"$srcdir" = x"../SrcDir"
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cd ../BuildDir
+../SrcDir/configure
+
+$MAKE check || { show_info; Exit 1; }
+show_info
+
+:
diff --git a/tests/check-tests-in-builddir.test b/tests/check-tests-in-builddir.test
new file mode 100755
index 000000000..b30999b3f
--- /dev/null
+++ b/tests/check-tests-in-builddir.test
@@ -0,0 +1,81 @@
+#! /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 the "Simple Tests" driver can find test in the srcdir as
+# well as in builddir, and that is prefers those in the builddir.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+exit ${FOO_EXIT_STATUS-0}
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+
+../configure
+
+cat > bar.test << 'END'
+#! /bin/sh
+exit 0
+END
+chmod a+x bar.test
+
+$MAKE check >out 2>&1 || { cat out; Exit1; }
+cat out
+grep '\.\./foo' out && Exit 1
+grep '^PASS: foo.test *$' out
+grep '^PASS: bar.test *$' out
+
+rm -f test-suite.log foo.log bar.log
+
+FOO_EXIT_STATUS=1 $MAKE check >out 2>&1 && { cat out; Exit1; }
+cat out
+grep '\.\./foo' out && Exit 1
+grep '^FAIL: foo.test *$' out
+grep '^PASS: bar.test *$' out
+
+rm -f test-suite.log foo.log bar.log
+
+# Check that if the same test is present in srcdir and builddir,
+# the one in builddir is preferred.
+cp bar.test foo.test
+FOO_EXIT_STATUS=1 $MAKE check >out 2>&1 || { cat out; Exit1; }
+cat out
+grep '^PASS: foo.test *$' out
+grep '^PASS: bar.test *$' out
+
+# The tests in the builddir must be preferred also by "make dist".
+FOO_EXIT_STATUS=1 $MAKE distcheck
+
+:
diff --git a/tests/check-tests_environment.test b/tests/check-tests_environment.test
new file mode 100755
index 000000000..a07ab957e
--- /dev/null
+++ b/tests/check-tests_environment.test
@@ -0,0 +1,47 @@
+#! /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/>.
+
+# "Simple Tests" testsuite driver: check TESTS_ENVIRONMENT support.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+test x"$FOO" = x"ok"
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+FOO=bad TESTS_ENVIRONMENT='FOO=ok' $MAKE check
+FOO=ok TESTS_ENVIRONMENT='FOO=bad' $MAKE check && Exit 1
+
+:
diff --git a/tests/instdir-ltlib.test b/tests/instdir-ltlib.test
index ec25bde12..a90536dbd 100755
--- a/tests/instdir-ltlib.test
+++ b/tests/instdir-ltlib.test
@@ -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
@@ -24,6 +25,7 @@ cat >>configure.in <<'END'
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_LIBTOOL
+AM_PATH_PYTHON
AC_OUTPUT
END
@@ -35,6 +37,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'
@@ -45,6 +49,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
@@ -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/instdir-prog.test b/tests/instdir-prog.test
index b5b150f45..eb52933ae 100755
--- a/tests/instdir-prog.test
+++ b/tests/instdir-prog.test
@@ -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
@@ -23,6 +24,7 @@ cat >>configure.in <<'END'
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_RANLIB
+AM_PATH_PYTHON
AC_OUTPUT
END
@@ -34,6 +36,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'
@@ -44,6 +48,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
@@ -53,11 +60,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"
@@ -65,6 +74,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/lflags.test b/tests/lflags.test
index a725c5c55..da207fb2e 100755
--- a/tests/lflags.test
+++ b/tests/lflags.test
@@ -28,6 +28,10 @@ echo 'extern int dummy;' >> lex.yy.c
END
chmod a+x fake-lex
+# Remove Lex from the environment, so that it won't interfere
+# with `make -e' below.
+unset LEX || :
+
cat >> configure.in <<'END'
AC_PROG_CC
# Simulate presence of Lex using our fake-lex script.
diff --git a/tests/lflags2.test b/tests/lflags2.test
index 39f8a97f9..9e339f37c 100755
--- a/tests/lflags2.test
+++ b/tests/lflags2.test
@@ -29,6 +29,10 @@ echo 'extern int dummy;' >> lex.yy.c
END
chmod a+x fake-lex
+# Remove Lex from the environment, so that it won't interfere
+# with `make -e' below.
+unset LEX || :
+
cat >> configure.in <<'END'
AC_PROG_CXX
# Simulate presence of Lex using our fake-lex script.
diff --git a/tests/nobase-python.test b/tests/nobase-python.test
index 5ff170e50..c869b85ad 100755
--- a/tests/nobase-python.test
+++ b/tests/nobase-python.test
@@ -30,6 +30,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
@@ -53,16 +54,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
@@ -76,4 +74,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/parallel-tests-subdir.test b/tests/parallel-tests-subdir.test
new file mode 100755
index 000000000..18695fe46
--- /dev/null
+++ b/tests/parallel-tests-subdir.test
@@ -0,0 +1,51 @@
+#! /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 the parallel-tests driver creates parent directories for
+# the log files when needed.
+
+parallel_tests=yes
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = dir1/foo.test dir2/dir3/foo.test
+TEST_LOG_COMPILER = sh
+END
+
+mkdir dir1 dir2 dir2/dir3
+echo : > dir1/foo.test
+echo : > dir2/dir3/foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+../configure
+$MAKE check
+find . # For debugging.
+test -f test-suite.log
+test -f dir1/foo.log
+test -f dir2/dir3/foo.log
+
+:
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 11fb0c171..07072da22 100755
--- a/tests/python.test
+++ b/tests/python.test
@@ -25,7 +25,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 bc291f20a..a585cb789 100755
--- a/tests/python10.test
+++ b/tests/python10.test
@@ -39,7 +39,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
@@ -79,3 +81,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 cb17f75a5..298176468 100755
--- a/tests/python11.test
+++ b/tests/python11.test
@@ -45,10 +45,12 @@ sed 's/AM_PATH_PYTHON/AM_PATH_PYTHON(,,:)/' configure.in >configure.int
mv -f configure.int configure.in
$ACLOCAL --force
$AUTOCONF --force
-# This one should define PYTHON as : and exit succesfully
+# This one should define PYTHON as : and exit successfully
./configure
# Any user setting should be used.
./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 62c4a6960..4403dda57 100755
--- a/tests/python2.test
+++ b/tests/python2.test
@@ -18,6 +18,7 @@
. ./defs || Exit 1
+$ACLOCAL
echo 1. pythondir not defined
@@ -26,8 +27,8 @@ PYTHON = x
python_PYTHON = foo.py
END
-$ACLOCAL
AUTOMAKE_fails -a
+grep 'pythondir.*undefined' stderr
grep AM_PATH_PYTHON stderr
@@ -38,8 +39,8 @@ PYTHON = x
pkgpython_PYTHON = foo.py
END
-$ACLOCAL
AUTOMAKE_fails -a
+grep 'pkgpythondir.*undefined' stderr
grep AM_PATH_PYTHON stderr
@@ -50,8 +51,8 @@ PYTHON = x
pyexec_PYTHON = foo.py
END
-$ACLOCAL
AUTOMAKE_fails -a
+grep 'pyexecdir.*undefined' stderr
grep AM_PATH_PYTHON stderr
@@ -62,8 +63,8 @@ PYTHON = x
pkgpyexec_PYTHON = foo.py
END
-$ACLOCAL
AUTOMAKE_fails -a
+grep 'pkgpyexecdir.*undefined' stderr
grep AM_PATH_PYTHON stderr
@@ -74,8 +75,8 @@ pkgpyexecdir = /here/we/go
pkgpyexec_PYTHON = foo.py
END
-$ACLOCAL
AUTOMAKE_fails -a
+grep 'PYTHON.*undefined' stderr
grep AM_PATH_PYTHON stderr
@@ -87,7 +88,7 @@ pkgpyexecdir = /here/we/go
pkgpyexec_PYTHON = foo.py
END
-$ACLOCAL
+rm -f py-compile
$AUTOMAKE -a
test -f py-compile
@@ -100,5 +101,6 @@ fubardir = /here/we/go
fubar_PYTHON = foo.py
END
-$ACLOCAL
$AUTOMAKE -a
+
+:
diff --git a/tests/python3.test b/tests/python3.test
index e29067b17..a5e12bd0b 100755
--- a/tests/python3.test
+++ b/tests/python3.test
@@ -45,3 +45,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 084744be1..cd9e4d6d5 100755
--- a/tests/python4.test
+++ b/tests/python4.test
@@ -30,7 +30,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 eabd90090..8acbdfeec 100755
--- a/tests/python5.test
+++ b/tests/python5.test
@@ -22,7 +22,7 @@
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
@@ -32,6 +32,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 ac842b30c..8b3c6f367 100755
--- a/tests/python6.test
+++ b/tests/python6.test
@@ -21,7 +21,7 @@
. ./defs || Exit 1
cat >>configure.in <<\EOF
-AM_PATH_PYTHON(,, [echo "GREP ME$PYTHON" >&2])
+AM_PATH_PYTHON(,, [echo "$PYTHON" > py])
AC_OUTPUT
EOF
@@ -31,9 +31,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 1c7d48242..1390a4e15 100755
--- a/tests/python7.test
+++ b/tests/python7.test
@@ -22,7 +22,7 @@
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
@@ -32,8 +32,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 8ed3c3dfd..981e64d54 100755
--- a/tests/python8.test
+++ b/tests/python8.test
@@ -19,8 +19,9 @@
required=python
. ./defs || Exit 1
-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
@@ -30,8 +31,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 e58058cc9..da95884af 100755
--- a/tests/python9.test
+++ b/tests/python9.test
@@ -15,13 +15,14 @@
# 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
-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
@@ -31,8 +32,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
: