https://github.com/python/cpython/commit/b23b27bc556857be73ee0f2379441c422b6fee26
commit: b23b27bc556857be73ee0f2379441c422b6fee26
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-01-23T15:50:04+01:00
summary:

gh-128690: Update test_embed for getpath.py exec_prefix change (#129137)

files:
M Lib/test/test_embed.py

diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index bd01913e49d170..ffb69c87a065aa 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -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,
@@ -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,
@@ -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])),
@@ -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')

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to