Skip to content

Commit

Permalink
gh-128690: Update test_embed for getpath.py exec_prefix change (#129137)
Browse files Browse the repository at this point in the history
  • Loading branch information
vstinner authored Jan 23, 2025
1 parent a95dca7 commit b23b27b
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions Lib/test/test_embed.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@
MAX_HASH_SEED = 4294967295

ABI_THREAD = 't' if sysconfig.get_config_var('Py_GIL_DISABLED') else ''
# PLATSTDLIB_LANDMARK copied from Modules/getpath.py
if os.name == 'nt':
PLATSTDLIB_LANDMARK = f'{sys.platlibdir}'
else:
VERSION_MAJOR = sys.version_info.major
VERSION_MINOR = sys.version_info.minor
PLATSTDLIB_LANDMARK = (f'{sys.platlibdir}/python{VERSION_MAJOR}.'
f'{VERSION_MINOR}{ABI_THREAD}/lib-dynload')


# If we are running from a build dir, but the stdlib has been installed,
Expand Down Expand Up @@ -1596,7 +1604,13 @@ def test_init_pyvenv_cfg(self):

with self.tmpdir_with_python() as tmpdir, \
tempfile.TemporaryDirectory() as pyvenv_home:

ver = sys.version_info
base_prefix = sysconfig.get_config_var("prefix")

# gh-128690: base_exec_prefix depends if PLATSTDLIB_LANDMARK exists
platstdlib = os.path.join(base_prefix, PLATSTDLIB_LANDMARK)
change_exec_prefix = not os.path.isdir(platstdlib)

if not MS_WINDOWS:
lib_dynload = os.path.join(pyvenv_home,
Expand All @@ -1620,7 +1634,8 @@ def test_init_pyvenv_cfg(self):

paths = self.module_search_paths()
if not MS_WINDOWS:
paths[-1] = lib_dynload
if change_exec_prefix:
paths[-1] = lib_dynload
else:
paths = [
os.path.join(tmpdir, os.path.basename(paths[0])),
Expand All @@ -1630,16 +1645,16 @@ def test_init_pyvenv_cfg(self):

executable = self.test_exe
base_executable = os.path.join(pyvenv_home, os.path.basename(executable))
exec_prefix = pyvenv_home
config = {
'base_prefix': sysconfig.get_config_var("prefix"),
'base_exec_prefix': exec_prefix,
'base_prefix': base_prefix,
'exec_prefix': tmpdir,
'prefix': tmpdir,
'base_executable': base_executable,
'executable': executable,
'module_search_paths': paths,
}
if change_exec_prefix:
config['base_exec_prefix'] = pyvenv_home
if MS_WINDOWS:
config['base_prefix'] = pyvenv_home
config['stdlib_dir'] = os.path.join(pyvenv_home, 'Lib')
Expand Down

0 comments on commit b23b27b

Please sign in to comment.