MCPcopy Index your code
hub / github.com/python/cpython / _check_build

Method _check_build

Lib/test/test_cppext/__init__.py:40–94  ·  view source on GitHub ↗
(self, extension_name, python_exe, std, limited,
                     extra_cflags=None)

Source from the content-addressed store, hash-verified

38 extra_cflags=extra_cflags)
39
40 def _check_build(self, extension_name, python_exe, std, limited,
41 extra_cflags=None):
42 pkg_dir = 'pkg'
43 os.mkdir(pkg_dir)
44 shutil.copy(SETUP, os.path.join(pkg_dir, os.path.basename(SETUP)))
45 shutil.copy(SOURCE, os.path.join(pkg_dir, os.path.basename(SOURCE)))
46
47 def run_cmd(operation, cmd):
48 env = os.environ.copy()
49 if std:
50 env['CPYTHON_TEST_CPP_STD'] = std
51 if limited:
52 env['CPYTHON_TEST_LIMITED'] = '1'
53 env['CPYTHON_TEST_EXT_NAME'] = extension_name
54 env['TEST_INTERNAL_C_API'] = str(int(self.TEST_INTERNAL_C_API))
55 if extra_cflags:
56 env['CPYTHON_TEST_EXTRA_CFLAGS'] = extra_cflags
57 if support.verbose:
58 print('Run:', ' '.join(map(shlex.quote, cmd)))
59 subprocess.run(cmd, check=True, env=env)
60 else:
61 proc = subprocess.run(cmd,
62 env=env,
63 stdout=subprocess.PIPE,
64 stderr=subprocess.STDOUT,
65 text=True)
66 if proc.returncode:
67 print('Run:', ' '.join(map(shlex.quote, cmd)))
68 print(proc.stdout, end='')
69 self.fail(
70 f"{operation} failed with exit code {proc.returncode}")
71
72 # Build and install the C++ extension
73 cmd = [python_exe, '-X', 'dev',
74 '-m', 'pip', 'install', '--no-build-isolation',
75 os.path.abspath(pkg_dir)]
76 if support.verbose:
77 cmd.append('-v')
78 run_cmd('Install', cmd)
79
80 # Do a reference run. Until we test that running python
81 # doesn't leak references (gh-94755), run it so one can manually check
82 # -X showrefcount results against this baseline.
83 cmd = [python_exe,
84 '-X', 'dev',
85 '-X', 'showrefcount',
86 '-c', 'pass']
87 run_cmd('Reference run', cmd)
88
89 # Import the C++ extension
90 cmd = [python_exe,
91 '-X', 'dev',
92 '-X', 'showrefcount',
93 '-c', f"import {extension_name}"]
94 run_cmd('Import', cmd)
95
96
97class TestPublicCAPI(BaseTests, unittest.TestCase):

Callers 1

check_buildMethod · 0.95

Calls 7

run_cmdFunction · 0.85
mkdirMethod · 0.45
copyMethod · 0.45
joinMethod · 0.45
basenameMethod · 0.45
abspathMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected