diff options
| author | Pradyun Gedam <pradyunsg@gmail.com> | 2023-04-13 04:17:36 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-13 04:17:36 (GMT) |
| commit | 9e677406ee6666b32d869ce68c826519ff877445 (patch) | |
| tree | 4ca0a4372affa79a53f129263b192c70aed59712 /Lib/test/test_cppext.py | |
| parent | fb38c1b52e77ffe6e8a02bfc01bd112dcd7e6d95 (diff) | |
| download | cpython-9e677406ee6666b32d869ce68c826519ff877445.zip cpython-9e677406ee6666b32d869ce68c826519ff877445.tar.gz cpython-9e677406ee6666b32d869ce68c826519ff877445.tar.bz2 | |
gh-95299: Rework test_cppext.py to not invoke setup.py directly (#103316)
* gh-95299: Rework test_cppext.py to not invoke setup.py directly
* Add tests/cppextdata data to `TESTSUBDIRS`
* Revert "Add tests/cppextdata data to `TESTSUBDIRS`"
This reverts commit 635492e53954fb0fc2a2875c8961bde99266c48d.
* Revert "gh-95299: Rework test_cppext.py to not invoke setup.py directly"
This reverts commit 41c5a667b5de7070bbde5780f1c124f96863c91d.
* Build and install the extension in a temporary directory instead
* Pull in wheels for setuptools and wheel for testing extension builds
Diffstat (limited to 'Lib/test/test_cppext.py')
| -rw-r--r-- | Lib/test/test_cppext.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/Lib/test/test_cppext.py b/Lib/test/test_cppext.py index 465894d..4fb62d8 100644 --- a/Lib/test/test_cppext.py +++ b/Lib/test/test_cppext.py @@ -1,6 +1,7 @@ # gh-91321: Build a basic C++ test extension to check that the Python C API is # compatible with C++ and does not emit C++ compiler warnings. import os.path +import shutil import sys import unittest import subprocess @@ -39,6 +40,10 @@ class TestCPPExt(unittest.TestCase): self._check_build(std_cpp03, extension_name) def _check_build(self, std_cpp03, extension_name): + pkg_dir = 'pkg' + os.mkdir(pkg_dir) + shutil.copy(SETUP_TESTCPPEXT, os.path.join(pkg_dir, "setup.py")) + venv_dir = 'env' verbose = support.verbose @@ -59,11 +64,15 @@ class TestCPPExt(unittest.TestCase): python = os.path.join(venv_dir, 'bin', python_exe) def run_cmd(operation, cmd): + env = os.environ.copy() + env['CPYTHON_TEST_CPP_STD'] = 'c++03' if std_cpp03 else 'c++11' + env['CPYTHON_TEST_EXT_NAME'] = extension_name if verbose: print('Run:', ' '.join(cmd)) - subprocess.run(cmd, check=True) + subprocess.run(cmd, check=True, env=env) else: proc = subprocess.run(cmd, + env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) @@ -72,16 +81,16 @@ class TestCPPExt(unittest.TestCase): self.fail( f"{operation} failed with exit code {proc.returncode}") - # Build the C++ extension cmd = [python, '-X', 'dev', - SETUP_TESTCPPEXT, 'build_ext', '--verbose'] - if std_cpp03: - cmd.append('-std=c++03') - run_cmd('Build', cmd) + '-m', 'pip', 'install', + support.findfile('setuptools-67.6.1-py3-none-any.whl'), + support.findfile('wheel-0.40.0-py3-none-any.whl')] + run_cmd('Install build dependencies', cmd) - # Install the C++ extension + # Build and install the C++ extension cmd = [python, '-X', 'dev', - SETUP_TESTCPPEXT, 'install'] + '-m', 'pip', 'install', '--no-build-isolation', + os.path.abspath(pkg_dir)] run_cmd('Install', cmd) # Do a reference run. Until we test that running python |
