automake-patches
[Top][All Lists]
Advanced

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

Re: [PATCH] {maint} python: extend and improve tests, fix minor glitches


From: Ralf Wildenhues
Subject: Re: [PATCH] {maint} python: extend and improve tests, fix minor glitches
Date: Thu, 3 Feb 2011 21:42:09 +0100
User-agent: Mutt/1.5.20 (2010-08-04)

Hi Stefano,

* Stefano Lattarini wrote on Wed, Feb 02, 2011 at 12:10:15AM CET:
> A testsuite-enhancement patch stemmed from my brief foray into
> Automake's python support.  This patch is in small part cosmetic,
> but IMHO offers real improvements and valuable additions, and
> also fixes a couple of glitches in python.m4.

OK for master (branched off of maint, if you prefer) with nits
addressed.

Before pushing, please test on a system without a python interpreter
installed (you can rename you pythons temporarily).

Sorry for the absence of other reviews, I'll try to make room for some
one of the next weekends.

Thanks,
Ralf

> Subject: [PATCH] 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.
> Prefer `cat' over `echo' to append to the generated configure.in.
> 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 virtualenvs.

What is virtualenvs?

> * tests/instdir-pyexec.test: New, sister of `instdir-python.test',
> but checking `$(pyexecdir)' instead of `$(pythondir)'.
> * tests/Makefile.am (TESTS): Update.

> --- 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

> --- /dev/null
> +++ b/tests/instdir-pyexec.test

> +# If $(pyexecdir) is the empty string, then nothing should be installed
> +# there.

This could just be checked in instdir-prog.test.  And a no-contents
version in instdir.test, analogously to the rest.

> +. ./defs || Exit 1
> +
> +set -e
> +
> +cat >>configure.in <<'END'
> +AM_PATH_PYTHON
> +AC_PROG_CC
> +AC_OUTPUT
> +END
> +
> +cat >Makefile.am <<'END'
> +pyexec_PROGRAMS = foo
> +END
> +
> +cat >foo.c <<'END'
> +int main (void)
> +{
> +  return 0;
> +}
> +END
> +
> +$ACLOCAL
> +$AUTOCONF
> +$AUTOMAKE
> +
> +cwd=`pwd`
> +instdir=$cwd/inst
> +destdir=$cwd/dest
> +mkdir build
> +cd build
> +../configure --prefix="$instdir"
> +$MAKE
> +
> +pyexecdir=''; export pyexecdir
> +
> +$MAKE -e install
> +test ! -d "$instdir"
> +$MAKE -e install DESTDIR="$destdir"
> +test ! -d "$instdir"
> +test ! -d "$destdir"
> +$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
> +cat stdout
> +grep 'rm ' stdout && Exit 1
> +$MAKE -e uninstall DESTDIR="$destdir" > stdout || { cat stdout; Exit 1; }
> +cat stdout
> +grep 'rm ' stdout && Exit 1

> --- a/tests/nobase-python.test
> +++ b/tests/nobase-python.test

> @@ -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
> +
> +:

> --- /dev/null
> +++ b/tests/python-dist.test

> +# 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
> +
> +:

> --- /dev/null
> +++ b/tests/python-vars.test

> +# Check that AM_PATH_PYTHON correctly set all the output variables

sets

> +# 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

Please check this code with some versions of both python 2 and python 3.

> +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

   test-am:
> +END
> +
> +echo > vars-exp
> +echo > vars-got.in
> +echo test-am: >> Makefile.am

and then delete this line.

> +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

> --- /dev/null
> +++ b/tests/python-virtualenv.test

> +# Check that python support can work well with virtualenvs.
> +# This test also works as a mild stress-test on the python support.
> +
> +. ./defs || Exit 1
> +
> +set -e
> +
> +# Skip the test if a proper virtualenv cannot be created.
> +virtualenv --version || Exit 77
> +virtualenv --verbose virtenv || Exit 77
> +test -f virtenv/bin/activate || Exit 77

required=virtualenv  ?

> +# 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]))'`

Ditto (testing with python{2,3}).

> +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

> --- a/tests/python.test
> +++ b/tests/python.test

> @@ -20,14 +20,21 @@
>  
>  set -e
>  
> -echo 'AM_PATH_PYTHON' >> configure.in
> +cat >> configure.in << 'END'
> +AM_PATH_PYTHON
> +END

No, please please no more of these kinds of changes ever more.
Especially since you violate your own coding "standard" in above
new tests.  Thanks.

>  cat > Makefile.am << 'END'
>  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

> --- a/tests/python2.test
> +++ b/tests/python2.test

> @@ -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

These changes will make the test less resilient against changes to
python.m4.  I like the increased coverage but the increased brittleness
of the test is somewhat of a downer.  Hmm.

>  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

> --- a/tests/python5.test
> +++ b/tests/python5.test

> @@ -24,16 +24,32 @@ 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])

Nice that you do it here, but up in python.m4 you should then, too.

>  AC_OUTPUT
>  EOF
>  
> +mkdir bin
> +cat > bin/python <<EOF
> +#! /bin/sh
> +exit 1
> +EOF
> +chmod a+x bin/python
> +PATH=`pwd`/bin:$PATH_SEPARATOR$PATH

Superfluous colon.

What is this bin/python script for?  It seems wrong here.  Please omit
it.

>  : > Makefile.am
>  
>  $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

> --- /dev/null
> +++ b/tests/python5b.test

> +# 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 && { 

trailing whitespace

> +  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

> --- a/tests/python6.test
> +++ b/tests/python6.test

> @@ -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":"

A colon doesn't need quoting.  The cat py output doesn't either,
so this can just be
  test x`cat py` = x:


> --- a/tests/python7.test
> +++ b/tests/python7.test

> @@ -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":"

See above.

> --- a/tests/python8.test
> +++ b/tests/python8.test

> @@ -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
>  
>  :

> --- a/tests/python9.test
> +++ b/tests/python9.test

> @@ -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`" = x'0:1'

See above.



reply via email to

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