From 934e31d86a6721c378598d4000c3ee39c59a154f Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Sun, 3 Apr 2022 11:22:17 +0200 Subject: [PATCH] Harden distutils tests Use correct executable when running import tests. Use pip install instead of setup.py install to test install. Should fix #1981 --- pythran/tests/test_distutils.py | 53 ++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 24 deletions(-) Index: pythran-0.11.0/pythran/tests/test_distutils.py =================================================================== --- pythran-0.11.0.orig/pythran/tests/test_distutils.py +++ pythran-0.11.0/pythran/tests/test_distutils.py @@ -10,6 +10,8 @@ cwd = os.path.dirname(__file__) python_version = "python{}.{}".format(sys.version_info.major, sys.version_info.minor) +python = sys.executable + def find_so(name, path): for root, dirs, files in os.walk(path): for filename in files: @@ -19,33 +21,35 @@ def find_so(name, path): class TestDistutils(unittest.TestCase): def test_setup_build(self): - check_call(['python', 'setup.py', 'build'], + check_call([python, 'setup.py', 'build'], cwd=os.path.join(cwd, 'test_distutils')) - check_call(['python', 'setup.py', 'install', '--prefix=demo_install'], + check_call([python, '-m', 'pip', 'install', '.', '--prefix=demo_install'], cwd=os.path.join(cwd, 'test_distutils')) base = os.path.join(cwd, 'test_distutils', 'demo_install',) libdir = os.path.join(base, 'lib') if not os.path.isdir(libdir): libdir = os.path.join(base, 'lib64') - check_call(['python', '-c', 'import demo'], - cwd=os.path.join(libdir, python_version, 'site-packages')) - check_call(['python', 'setup.py', 'clean'], + + local_env = os.environ.copy() + local_env['PYTHONPATH'] = os.path.join(libdir, python_version, 'site-packages') + check_call([python, '-c', 'import demo'], env=local_env) + check_call([python, 'setup.py', 'clean'], cwd=os.path.join(cwd, 'test_distutils')) shutil.rmtree(os.path.join(cwd, 'test_distutils', 'demo_install')) shutil.rmtree(os.path.join(cwd, 'test_distutils', 'build')) def test_setup_sdist_install(self): - check_call(['python', 'setup.py', 'sdist', "--dist-dir=sdist"], + check_call([python, 'setup.py', 'sdist', "--dist-dir=sdist"], cwd=os.path.join(cwd, 'test_distutils')) check_call(['tar', 'xzf', 'demo-1.0.tar.gz'], cwd=os.path.join(cwd, 'test_distutils', 'sdist')) - check_call(['python', 'setup.py', 'install', '--prefix=demo_install'], + check_call([python, 'setup.py', 'install', '--prefix=demo_install'], cwd=os.path.join(cwd, 'test_distutils', 'sdist', 'demo-1.0')) shutil.rmtree(os.path.join(cwd, 'test_distutils', 'sdist')) def test_setup_bdist_install(self): - check_call(['python', 'setup.py', 'bdist', "--dist-dir=bdist"], + check_call([python, 'setup.py', 'bdist', "--dist-dir=bdist"], cwd=os.path.join(cwd, 'test_distutils')) dist_path = os.path.join(cwd, 'test_distutils', 'bdist') tgz = [f for f in os.listdir(dist_path) if f.endswith(".tar.gz")][0] @@ -56,7 +60,7 @@ class TestDistutils(unittest.TestCase): shutil.rmtree(dist_path) def test_setup_wheel_install(self): - check_call(['python', 'setup.py', 'bdist_wheel', "--dist-dir=bdist_wheel"], + check_call([python, 'setup.py', 'bdist_wheel', "--dist-dir=bdist_wheel"], cwd=os.path.join(cwd, 'test_distutils_setuptools')) dist_path = os.path.join(cwd, 'test_distutils_setuptools', 'bdist_wheel') wheel_dir = 'wheeeeeeel' @@ -69,33 +73,34 @@ class TestDistutils(unittest.TestCase): def test_setup_build2(self): - check_call(['python', 'setup.py', 'build'], + check_call([python, 'setup.py', 'build'], cwd=os.path.join(cwd, 'test_distutils_packaged')) - check_call(['python', 'setup.py', 'install', '--prefix=demo_install2'], + check_call([python, '-m', 'pip', 'install', '.', '--prefix=demo_install2'], cwd=os.path.join(cwd, 'test_distutils_packaged')) base = os.path.join(cwd, 'test_distutils_packaged', 'demo_install2',) libdir = os.path.join(base, 'lib') if not os.path.isdir(libdir): libdir = os.path.join(base, 'lib64') - check_call(['python', '-c', 'import demo2.a'], - cwd=os.path.join(libdir, python_version, 'site-packages')) - check_call(['python', 'setup.py', 'clean'], + local_env = os.environ.copy() + local_env['PYTHONPATH'] = os.path.join(libdir, python_version, 'site-packages') + check_call([python, '-c', 'import demo2.a'], env=local_env) + check_call([python, 'setup.py', 'clean'], cwd=os.path.join(cwd, 'test_distutils_packaged')) shutil.rmtree(os.path.join(cwd, 'test_distutils_packaged', 'demo_install2')) shutil.rmtree(os.path.join(cwd, 'test_distutils_packaged', 'build')) def test_setup_sdist_install2(self): - check_call(['python', 'setup.py', 'sdist', "--dist-dir=sdist2"], + check_call([python, 'setup.py', 'sdist', "--dist-dir=sdist2"], cwd=os.path.join(cwd, 'test_distutils_packaged')) check_call(['tar', 'xzf', 'demo2-1.0.tar.gz'], cwd=os.path.join(cwd, 'test_distutils_packaged', 'sdist2')) - check_call(['python', 'setup.py', 'install', '--prefix=demo_install2'], + check_call([python, 'setup.py', 'install', '--prefix=demo_install2'], cwd=os.path.join(cwd, 'test_distutils_packaged', 'sdist2', 'demo2-1.0')) shutil.rmtree(os.path.join(cwd, 'test_distutils_packaged', 'sdist2')) def test_setup_bdist_install2(self): - check_call(['python', 'setup.py', 'bdist', "--dist-dir=bdist"], + check_call([python, 'setup.py', 'bdist', "--dist-dir=bdist"], cwd=os.path.join(cwd, 'test_distutils_packaged')) dist_path = os.path.join(cwd, 'test_distutils_packaged', 'bdist') tgz = [f for f in os.listdir(dist_path) if f.endswith(".tar.gz")][0] @@ -106,34 +111,34 @@ class TestDistutils(unittest.TestCase): shutil.rmtree(dist_path) def test_setup_build3(self): - check_call(['python', 'setup.py', 'build'], + check_call([python, 'setup.py', 'build'], cwd=os.path.join(cwd, 'test_distutils_numpy')) - check_call(['python', 'setup.py', 'install', '--prefix=demo_install3'], + check_call([python, 'setup.py', 'install', '--prefix=demo_install3'], cwd=os.path.join(cwd, 'test_distutils_numpy')) base = os.path.join(cwd, 'test_distutils_numpy', 'demo_install3',) libdir = os.path.join(base, 'lib') if not os.path.isdir(libdir): libdir = os.path.join(base, 'lib64') - check_call(['python', '-c', 'import a'], + check_call([python, '-c', 'import a'], cwd=os.path.join(libdir, python_version, 'site-packages', 'demo3')) - check_call(['python', 'setup.py', 'clean'], + check_call([python, 'setup.py', 'clean'], cwd=os.path.join(cwd, 'test_distutils_numpy')) shutil.rmtree(os.path.join(cwd, 'test_distutils_numpy', 'demo_install3')) shutil.rmtree(os.path.join(cwd, 'test_distutils_numpy', 'build')) def test_setup_sdist_install3(self): - check_call(['python', 'setup.py', 'sdist', "--dist-dir=sdist3"], + check_call([python, 'setup.py', 'sdist', "--dist-dir=sdist3"], cwd=os.path.join(cwd, 'test_distutils_numpy')) check_call(['tar', 'xzf', 'demo3-1.0.tar.gz'], cwd=os.path.join(cwd, 'test_distutils_numpy', 'sdist3')) - check_call(['python', 'setup.py', 'install', '--prefix=demo_install3'], + check_call([python, 'setup.py', 'install', '--prefix=demo_install3'], cwd=os.path.join(cwd, 'test_distutils_numpy', 'sdist3', 'demo3-1.0')) shutil.rmtree(os.path.join(cwd, 'test_distutils_numpy', 'sdist3')) def test_setup_bdist_install3(self): - check_call(['python', 'setup.py', 'bdist', "--dist-dir=bdist"], + check_call([python, 'setup.py', 'bdist', "--dist-dir=bdist"], cwd=os.path.join(cwd, 'test_distutils_numpy')) dist_path = os.path.join(cwd, 'test_distutils_numpy', 'bdist') tgz = [f for f in os.listdir(dist_path) if f.endswith(".tar.gz")][0]