Subject: [PATCH 7/8] python tests: support PEP-3147 installation layout

From: Stefano Lattarini <[email-masked]>
Date: Mon, 19 Nov 2012 23:12:22 +0100

This fixes several spurious testsuite failures with python >= 3.2,
introduced by recent commit v1.12.4-43-ge0e99ed, "python: improve
support for modern python (CPython 3.2 and PyPy)".

* t/ax/am-test-lib.sh (python_has_pep3147, pyc_location, py_installed):
New functions.
($am_pep3147_tag): New variable.
* t/py-compile-basic2.sh: Deleted, too difficult to adapt for the
gain it would offer; move the still relevant parts ...
* t/py-compile-basic.sh: ... here.  Adapt and adjust the rest of
the test as well.
* t/nobase-python.sh: Adapt and adjust.
* t/py-compile-basedir.sh: Likewise.
* t/py-compile-destdir.sh: Likewise.
* t/py-compile-option-terminate.sh: Likewise.
* t/python-pr10995.sh: Likewise.
* t/python-virtualenv.sh: Likewise.
* t/python10.sh: Likewise.
* t/python12.sh: Likewise.
* t/python3.sh: Likewise.
* t/list-of-tests.mk: Adjust list of tests.

Signed-off-by: Stefano Lattarini <[email-masked]>
---
 t/ax/am-test-lib.sh              | 59 +++++++++++++++++++++++++++
 t/list-of-tests.mk               |  1 -
 t/nobase-python.sh               | 50 +++++++++++++----------
 t/py-compile-basedir.sh          | 18 +++++----
 t/py-compile-basic.sh            | 19 ++++++---
 t/py-compile-basic2.sh           | 70 --------------------------------
 t/py-compile-destdir.sh          | 22 +++++-----
 t/py-compile-option-terminate.sh | 20 +++++-----
 t/python-pr10995.sh              |  8 ++--
 t/python-virtualenv.sh           | 86 ++++++++++++++++++++++------------------
 t/python10.sh                    | 36 ++++++++---------
 t/python12.sh                    | 14 +++----
 t/python3.sh                     |  6 +--
 13 files changed, 213 insertions(+), 196 deletions(-)
 delete mode 100755 t/py-compile-basic2.sh

diff --git a/t/ax/am-test-lib.sh b/t/ax/am-test-lib.sh
index 103f97d..5725f28 100644
--- a/t/ax/am-test-lib.sh
+++ b/t/ax/am-test-lib.sh
@@ -443,6 +443,65 @@ fetch_tap_driver ()
 # use the perl implementation by default for the moment.
 am_tap_implementation=${am_tap_implementation-shell}
 
+# $PYTHON and support for PEP-3147.  Needed to check our python-related
+# install rules.
+python_has_pep3147 ()
+{
+  if test -z "$am_pep3147_tag"; then
+    am_pep3147_tag=$($PYTHON -c 'import imp; print(imp.get_tag())') \
+      || am_pep3147_tag=none
+  fi
+  test $am_pep3147_tag != none
+}
+am_pep3147_tag=
+
+# pyc_location [-p] [FILE]
+# ------------------------
+# Determine what the actual location of the given '.pyc' or '.pyo'
+# byte-compiled file should be, taking into account PEP-3147.  Save
+# the location in the '$am_pyc_file' variable.  If the '-p' option
+# is given, print the location on the standard output as well.
+pyc_location ()
+{
+  case $#,$1 in
+    2,-p) am_pyc_print=yes; shift;;
+     1,*) am_pyc_print=no;;
+       *) fatal_ "pyc_location: invalid usage";;
+  esac
+  if python_has_pep3147; then
+    case $1 in
+      */*) am_pyc_dir=${1%/*} am_pyc_base=${1##*/};;
+        *) am_pyc_dir=. am_pyc_base=$1;;
+    esac
+    am_pyc_ext=${am_pyc_base##*.}
+    am_pyc_base=${am_pyc_base%.py?}
+    am_pyc_file=$am_pyc_dir/__pycache__/$am_pyc_base.$am_pep3147_tag.$am_pyc_ext
+  else
+    am_pyc_file=$1
+  fi
+  test $am_pyc_print = no || printf '%s\n' "$am_pyc_file"
+}
+
+# py_installed [--not] FILE
+# --------------------------
+# Check that the given python FILE has been installed (resp. *not*
+# installed, if the '--not' option is specified).  If FILE is a
+# byte-compiled '.pyc' file, the new installation layout specified
+# by PEP-3147 will be taken into account.
+py_installed ()
+{
+  case $#,$1 in
+        1,*) am_test_py_file='test -f';;
+    2,--not) am_test_py_file='test ! -e'; shift;;
+          *) fatal_ "pyc_installed: invalid usage";;
+  esac
+  case $1 in
+    *.py[co]) pyc_location "$1"; am_target_py_file=$am_pyc_file;;
+           *) am_target_py_file=$1;;
+  esac
+  $am_test_py_file "$am_target_py_file"
+}
+
 # Usage: require_compiler_ {cc|c++|fortran|fortran77}
 require_compiler_ ()
 {
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 4d84940..8d551d1 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -882,7 +882,6 @@ t/print-libdir.sh \
 t/proginst.sh \
 t/programs-primary-rewritten.sh \
 t/py-compile-basic.sh \
-t/py-compile-basic2.sh \
 t/py-compile-basedir.sh \
 t/py-compile-destdir.sh \
 t/py-compile-env.sh \
diff --git a/t/nobase-python.sh b/t/nobase-python.sh
index dba17f7..6480f26 100755
--- a/t/nobase-python.sh
+++ b/t/nobase-python.sh
@@ -28,21 +28,31 @@ cat > Makefile.am <<'END'
 mydir=$(prefix)/my
 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
-	test   -f inst/my/two.pyc
-	test   -f inst/my/base.py
-	test   -f inst/my/base.pyc
-	test   -f inst/my/sub/nobase.py
-	test   -f inst/my/sub/nobase.pyc
-	test ! -f inst/my/nobase.py
-	test ! -f inst/my/nobase.pyc
 END
 
+test_install()
+{
+  $MAKE install-data
+  find inst -print # For debugging.
+  py_installed inst/my/one.py
+  py_installed inst/my/one.pyc
+  py_installed inst/my/two.py
+  py_installed inst/my/two.pyc
+  py_installed inst/my/base.py
+  py_installed inst/my/base.pyc
+  py_installed inst/my/sub/nobase.py
+  py_installed inst/my/sub/nobase.pyc
+  py_installed --not inst/my/nobase.py
+  py_installed --not inst/my/nobase.pyc
+}
+
+test_uninstall()
+{
+  $MAKE uninstall
+  test -d inst/my
+  ! find inst/my -type f -print | grep .
+}
+
 mkdir sub
 
 for file in one.py sub/base.py two.py sub/nobase.py; do
@@ -56,23 +66,19 @@ $AUTOMAKE --add-missing
 ./configure --prefix "$(pwd)/inst" --program-prefix=p
 
 $MAKE
-$MAKE test-install-data
-$MAKE uninstall
-
-find inst/my -type f -print | grep . && exit 1
+test_install
+test_uninstall
 
 $MAKE install-strip
+test_uninstall
 
 # Likewise, in a VPATH build.
 
-$MAKE uninstall
 $MAKE distclean
 mkdir build
 cd build
 ../configure --prefix "$(pwd)/inst" --program-prefix=p
-$MAKE
-$MAKE test-install-data
-$MAKE uninstall
-find inst/my -type f -print | grep . && exit 1
+test_install
+test_uninstall
 
 :
diff --git a/t/py-compile-basedir.sh b/t/py-compile-basedir.sh
index f2cef30..75b45f7 100755
--- a/t/py-compile-basedir.sh
+++ b/t/py-compile-basedir.sh
@@ -38,13 +38,17 @@ for d in foo foo/bar "$(pwd)/foo" . .. ../foo ''; do
   : > "$d2/$f.py"
   : > "$d2/sub/$f.py"
   ./py-compile --basedir "$d" "$f.py" "sub/$f.py"
-  ls -l "$d2" "$d2/sub" # For debugging.
-  test -f "$d2/$f.pyc"
-  test -f "$d2/$f.pyo"
-  test -f "$d2/sub/$f.pyc"
-  test -f "$d2/sub/$f.pyo"
-  rm -f "$d2/$f.pyc" "$d2/$f.pyo" "$d2/sub/$f.pyc" "$d2/sub/$f.pyo"
-  find . | grep '\.py[co]$' && exit 1
+  find "$d2" # For debugging.
+  py_installed "$d2/$f.pyc"
+  py_installed "$d2/$f.pyo"
+  py_installed "$d2/sub/$f.pyc"
+  py_installed "$d2/sub/$f.pyo"
+  files=$(find "$d2" | grep '\.py[co]$')
+  test $(echo "$files" | wc -l) -eq 4
+  case $d2 in
+    .|..) rm -f $files;;
+       *) rm -rf "$d2";;
+  esac
 done
 
 :
diff --git a/t/py-compile-basic.sh b/t/py-compile-basic.sh
index 73597c3..cc5fec3 100755
--- a/t/py-compile-basic.sh
+++ b/t/py-compile-basic.sh
@@ -46,7 +46,8 @@ class Foo:
 bar = baz = (1, (2,), [3, 4]); zardoz = 0;
 END
 
-cat > bar.py <<'END'
+mkdir sub
+cat > sub/bar.py <<'END'
 # Import of non-existent modules, or assertion of false conditions,
 # shouldn't cause problems, as it should be enough for the code to
 # be syntactically correct.
@@ -54,10 +55,16 @@ import Automake.No.Such.Module
 assert False
 END
 
-./py-compile foo.py bar.py
-test -f foo.pyc
-test -f foo.pyo
-test -f bar.pyc
-test -f bar.pyo
+# An empty file in a more deeply-nested directory should be ok as well.
+mkdir -p 1/_/2/_/3/_
+: > 1/_/2/_/3/_/0.py
+
+./py-compile foo.py sub/bar.py 1/_/2/_/3/_/0.py
+py_installed foo.pyc
+py_installed foo.pyo
+py_installed sub/bar.pyc
+py_installed sub/bar.pyo
+py_installed 1/_/2/_/3/_/0.pyc
+py_installed 1/_/2/_/3/_/0.pyo
 
 :
diff --git a/t/py-compile-basic2.sh b/t/py-compile-basic2.sh
deleted file mode 100755
index 19fdf72..0000000
--- a/t/py-compile-basic2.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2011-2012 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 more basic functionalities of the 'py-compile' script, with
-# dummy python sources, but more complex directory layouts.  See also
-# related test 'py-compile-basic.sh'.
-
-required=python
-. ./defs || exit 1
-
-ocwd=$(pwd) || fatal_ "getting current working directory"
-
-pyfiles="
-  foo.py
-  ./foo1.py
-  ../foo2.py
-  ../dir/foo3.py
-  $ocwd/foo4.py
-  sub/bar.py
-  sub/subsub/barbar.py
-  __init__.py
-  sub/__init__.py
-  1.py
-  .././_.py
-"
-
-lst='
-  dir/foo
-  dir/foo1
-  foo2
-  dir/foo3
-  foo4
-  dir/sub/bar
-  dir/sub/subsub/barbar
-  dir/__init__
-  dir/sub/__init__
-  dir/1
-  _
-'
-
-mkdir dir
-cd dir
-cp "$am_scriptdir/py-compile" . \
-  || fatal_ "failed to fetch auxiliary script py-compile"
-mkdir sub sub/subsub
-touch $pyfiles
-./py-compile $pyfiles
-cd "$ocwd"
-
-for x in $lst; do echo $x.pyc; echo $x.pyo; done | sort > exp
-find . -name '*.py[co]' | sed 's|^\./||' | sort > got
-
-cat exp
-cat got
-diff exp got
-
-:
diff --git a/t/py-compile-destdir.sh b/t/py-compile-destdir.sh
index 4d303d5..ba666f6 100755
--- a/t/py-compile-destdir.sh
+++ b/t/py-compile-destdir.sh
@@ -1,4 +1,4 @@
-#! /bin/sh
+    #! /bin/sh
 # Copyright (C) 2011-2012 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -31,13 +31,17 @@ echo 'def foo (): return "foo"' > $destdir/foo.py
 echo 'def bar (): return "bar"' > $destdir/sub/bar.py
 
 ./py-compile --destdir $destdir foo.py sub/bar.py
-ls -l $destdir $destdir/sub # For debugging.
-ls . sub | grep '\.py[co]$' && exit 1
-test -f $destdir/foo.pyc
-test -f $destdir/foo.pyo
-test -f $destdir/sub/bar.pyc
-test -f $destdir/sub/bar.pyo
-strings $destdir/*.py[co] $destdir/sub/*.py[co] || : # For debugging.
-$FGREP $destdir $destdir/*.py[co] $destdir/sub/*.py[co] && exit 1
+
+find $destdir # For debugging.
+st=0
+for x in c o; do
+  for b in foo sub/bar; do
+    f=$(pyc_location -p "$destdir/$b.py$x")
+    test -f "$f"
+    strings "$f" || : # For debugging.
+    $FGREP $destdir $f && { echo BAD: $f; st=1; }
+  done
+done
+exit $st
 
 :
diff --git a/t/py-compile-option-terminate.sh b/t/py-compile-option-terminate.sh
index 5c2b56f..0ad1fd8 100755
--- a/t/py-compile-option-terminate.sh
+++ b/t/py-compile-option-terminate.sh
@@ -26,18 +26,18 @@ cp "$am_scriptdir/py-compile" . \
 : > ./-o.py
 : > ./--foo.py
 ./py-compile -- -o.py --foo.py
-test -f ./-o.pyc
-test -f ./-o.pyo
-test -f ./--foo.pyc
-test -f ./--foo.pyo
+py_installed ./-o.pyc
+py_installed ./-o.pyo
+py_installed ./--foo.pyc
+py_installed ./--foo.pyo
 rm -f ./-*.py[co]
 : > x.py
 ./py-compile x.py -o.py --foo.py
-test -f ./x.pyc
-test -f ./x.pyo
-test -f ./-o.pyc
-test -f ./-o.pyo
-test -f ./--foo.pyc
-test -f ./--foo.pyo
+py_installed ./x.pyc
+py_installed ./x.pyo
+py_installed ./-o.pyc
+py_installed ./-o.pyo
+py_installed ./--foo.pyc
+py_installed ./--foo.pyo
 
 :
diff --git a/t/python-pr10995.sh b/t/python-pr10995.sh
index c530a13..63e97c5 100755
--- a/t/python-pr10995.sh
+++ b/t/python-pr10995.sh
@@ -46,10 +46,10 @@ test -f py-compile
 
 ./configure --prefix="$(pwd)/inst"
 $MAKE install
-test -f inst/py/yes.py
-test -f inst/py/yes.pyc
-test ! -e inst/py/no.py
-test ! -e inst/py/no.pyc
+test -f            inst/py/yes.py
+test ! -e          inst/py/no.py
+py_installed       inst/py/yes.pyc
+py_installed --not inst/py/no.pyc
 
 $MAKE disttest
 
diff --git a/t/python-virtualenv.sh b/t/python-virtualenv.sh
index 23a9edc..89a99aa 100755
--- a/t/python-virtualenv.sh
+++ b/t/python-virtualenv.sh
@@ -26,7 +26,7 @@ CONFIG_SITE=/dev/null; export CONFIG_SITE
 py_version_pre=$($PYTHON -V)
 
 # Skip the test if a proper virtualenv cannot be created.
-virtualenv -p"$PYTHON" --verbose virtenv && test -f virtenv/bin/activate \
+virtualenv -p"$PYTHON" --verbose virtenv && py_installed virtenv/bin/activate \
   || skip_ "couldn't create python virtual environment"
 
 # Activate the virtualenv.
@@ -45,12 +45,20 @@ cwd=$(pwd) || fatal_ "getting current working directory"
 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 to do do this early, just to set some cache variables properly,
+# since because we're going to unset $PYTHON next.
+if python_has_pep3147; then
+  : PEP 3147 will be used in installation of ".pyc" files
+fi
+# We don't want our original python to be picked up by configure
+# invocations.
+unset PYTHON
+
 # We need control over the package name.
 cat > configure.ac << END
 AC_INIT([am_virtenv], [1.0])
 AM_INIT_AUTOMAKE
 AC_CONFIG_FILES([Makefile])
-AC_SUBST([MY_VIRTENV], ['$cwd/virtenv'])
 AC_PROG_CC
 AM_PROG_AR
 AC_PROG_RANLIB
@@ -66,9 +74,7 @@ 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
+.PYTHON: debug test-run
 debug:
 	@echo PYTHON: $(PYTHON)
 	@echo PYTHON_VERSION: $(PYTHON_VERSION)
@@ -92,24 +98,6 @@ test-run:
 	## 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
 
@@ -130,6 +118,34 @@ int foo (void)
 }
 END
 
+check_install ()
+{
+  $MAKE install ${1+"$@"}
+
+  test -f      "$py_site"/am_foo.py
+  py_installed "$py_site"/am_foo.pyc
+  py_installed "$py_site"/am_foo.pyo
+  py_installed "$py_site"/am_virtenv/__init__.py
+  py_installed "$py_site"/am_virtenv/__init__.pyc
+  py_installed "$py_site"/am_virtenv/__init__.pyo
+  test -f      "$py_site"/libquux.a
+  test -f      "$py_site"/am_virtenv/libzardoz.a
+}
+
+check_uninstall ()
+{
+  $MAKE uninstall ${1+"$@"}
+
+  test ! -e          "$py_site"/am_foo.py
+  py_installed --not "$py_site"/am_foo.pyc
+  py_installed --not "$py_site"/am_foo.pyo
+  test ! -e          "$py_site"/am_virtenv/__init__.py
+  py_installed --not "$py_site"/am_virtenv/__init__.pyc
+  py_installed --not "$py_site"/am_virtenv/__init__.pyo
+  test ! -e          "$py_site"/libquux.a
+  test ! -e          "$py_site"/am_virtenv/libzardoz.a
+}
+
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
@@ -138,31 +154,25 @@ $AUTOMAKE --add-missing
 mkdir build
 cd build
 ../configure --prefix="$VIRTUAL_ENV"
-$MAKE install
-$MAKE test-install
+check_install
 $MAKE test-run
-$MAKE uninstall
-$MAKE test-uninstall
+check_uninstall
 cd ..
 
 # Try an in-tree build.
 ./configure --prefix="$VIRTUAL_ENV"
-$MAKE install
-$MAKE test-install
+check_install
 $MAKE test-run
-$MAKE uninstall
-$MAKE test-uninstall
+check_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
+check_install
 $MAKE test-run
-$MAKE uninstall
-$MAKE test-uninstall
+check_uninstall
 
 $MAKE distclean
 
@@ -170,12 +180,10 @@ $MAKE distclean
 ./configure --prefix="$cwd/bad-prefix"
 pythondir=$py_site pyexecdir=$py_site
 export pythondir pyexecdir
-$MAKE -e install
+check_install -e
 test ! -e bad-prefix
-$MAKE -e test-install
 $MAKE test-run
-$MAKE -e uninstall
-$MAKE -e test-uninstall
+check_uninstall -e
 unset pythondir pyexecdir
 
 # Also check that the distribution is self-contained, for completeness.
diff --git a/t/python10.sh b/t/python10.sh
index 5465810..8814902 100755
--- a/t/python10.sh
+++ b/t/python10.sh
@@ -58,29 +58,29 @@ cwd=$(pwd) || fatal_ "getting current working directory"
 
 ../configure --prefix="$cwd/$inst" one=0
 $MAKE install
-test -f "$inst/your/two.py"
-test -f "$inst/your/two.pyc"
-test -f "$inst/your/two.pyo"
-test ! -e "$inst/my/one.py"
-test ! -e "$inst/my/one.pyc"
-test ! -e "$inst/my/one.pyo"
+test -f            "$inst/your/two.py"
+py_installed       "$inst/your/two.pyc"
+py_installed       "$inst/your/two.pyo"
+py_installed --not "$inst/my/one.py"
+py_installed --not "$inst/my/one.pyc"
+py_installed --not "$inst/my/one.pyo"
 $MAKE uninstall
-test ! -e "$inst/your/two.py"
-test ! -e "$inst/your/two.pyc"
-test ! -e "$inst/your/two.pyo"
+py_installed --not "$inst/your/two.py"
+py_installed --not "$inst/your/two.pyc"
+py_installed --not "$inst/your/two.pyo"
 
 ../configure --prefix=$cwd/"$inst" one=1
 $MAKE install
-test ! -e "$inst/your/two.py"
-test ! -e "$inst/your/two.pyc"
-test ! -e "$inst/your/two.pyo"
-test -f "$inst/my/one.py"
-test -f "$inst/my/one.pyc"
-test -f "$inst/my/one.pyo"
+py_installed --not "$inst/your/two.py"
+py_installed --not "$inst/your/two.pyc"
+py_installed --not "$inst/your/two.pyo"
+test -f            "$inst/my/one.py"
+py_installed       "$inst/my/one.pyc"
+py_installed       "$inst/my/one.pyo"
 $MAKE uninstall
-test ! -e "$inst/my/one.py"
-test ! -e "$inst/my/one.pyc"
-test ! -e "$inst/my/one.pyo"
+py_installed --not "$inst/my/one.py"
+py_installed --not "$inst/my/one.pyc"
+py_installed --not "$inst/my/one.pyo"
 
 $MAKE disttest
 
diff --git a/t/python12.sh b/t/python12.sh
index 898c673..12dca5d 100755
--- a/t/python12.sh
+++ b/t/python12.sh
@@ -36,19 +36,19 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
 
-instdir=$(pwd)/inst
+destdir=$(pwd)/inst
 mkdir inst build
 cd build
 ../configure --prefix="/usr"
-$MAKE install DESTDIR=$instdir
+$MAKE install DESTDIR=$destdir
 
 # Perfunctory test that the files were created.
-test -f "$instdir/usr/share/my/my.py"
-test -f "$instdir/usr/share/my/my.pyc"
-test -f "$instdir/usr/share/my/my.pyo"
+test -f "$destdir/usr/share/my/my.py"
+pyo=$(pyc_location -p "$destdir/usr/share/my/my.pyo")
+pyc=$(pyc_location -p "$destdir/usr/share/my/my.pyc")
 
 # If DESTDIR has made it into the byte compiled files, fail the test.
-$FGREP "$instdir" "$instdir/usr/share/my/my.pyo" \
-                  "$instdir/usr/share/my/my.pyc" && exit 1
+st=0; $FGREP "$destdir" "$pyc" "$pyo" || st=$?
+test $st -eq 1
 
 :
diff --git a/t/python3.sh b/t/python3.sh
index 8667cf9..934be21 100755
--- a/t/python3.sh
+++ b/t/python3.sh
@@ -40,8 +40,8 @@ mkdir build
 cd build
 ../configure --prefix="$(pwd)/inst"
 $MAKE install
-test -f inst/my/one.py
-test -f inst/my/one.pyc
-test -f inst/my/one.pyo
+py_installed inst/my/one.py
+py_installed inst/my/one.pyc
+py_installed inst/my/one.pyo
 
 :
-- 
1.8.0.209.gf3828dc