]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-109615: Fix support test_copy_python_src_ignore() (#109958)
authorVictor Stinner <vstinner@python.org>
Wed, 27 Sep 2023 10:32:12 +0000 (12:32 +0200)
committerGitHub <noreply@github.com>
Wed, 27 Sep 2023 10:32:12 +0000 (12:32 +0200)
Fix the test when run on an installed Python: use "abs_srcdir" of
sysconfig, and skip the test if the Python source code cannot be
found.

* Tools/patchcheck/patchcheck.py, Tools/freeze/test/freeze.py and
  Lib/test/libregrtest/utils.py now first try to get "abs_srcdir"
  from sysconfig, before getting "srcdir" from sysconfig.
* test.pythoninfo logs sysconfig "abs_srcdir".

Lib/test/libregrtest/utils.py
Lib/test/pythoninfo.py
Lib/test/test_support.py
Tools/freeze/test/freeze.py
Tools/patchcheck/patchcheck.py

index 76922178d7b6d671b7a6d77c85269e8a77a19f7a..bedf9a5420db64c6db9b75cbba96541ad166cfe5 100644 (file)
@@ -355,11 +355,13 @@ def get_temp_dir(tmp_dir: StrPath | None = None) -> StrPath:
             if not support.is_wasi:
                 tmp_dir = sysconfig.get_config_var('abs_builddir')
                 if tmp_dir is None:
-                    # gh-74470: On Windows, only srcdir is available. Using
-                    # abs_builddir mostly matters on UNIX when building Python
-                    # out of the source tree, especially when the source tree
-                    # is read only.
-                    tmp_dir = sysconfig.get_config_var('srcdir')
+                    tmp_dir = sysconfig.get_config_var('abs_srcdir')
+                    if not tmp_dir:
+                        # gh-74470: On Windows, only srcdir is available. Using
+                        # abs_builddir mostly matters on UNIX when building
+                        # Python out of the source tree, especially when the
+                        # source tree is read only.
+                        tmp_dir = sysconfig.get_config_var('srcdir')
                 tmp_dir = os.path.join(tmp_dir, 'build')
             else:
                 # WASI platform
index c372efaedd313ba86075b3906afab102109e3815..0e7528ef97c5f68c7b58eb5f761b4229b206143c 100644 (file)
@@ -520,6 +520,7 @@ def collect_sysconfig(info_add):
         'SHELL',
         'SOABI',
         'abs_builddir',
+        'abs_srcdir',
         'prefix',
         'srcdir',
     ):
index af38db596d8528395a38cd3d38e7acb372ebe2fc..134ce24484fa28f31a14cfe13b2dbfc1224968ee 100644 (file)
@@ -802,8 +802,13 @@ class TestSupport(unittest.TestCase):
             support.real_max_memuse = old_real_max_memuse
 
     def test_copy_python_src_ignore(self):
-        src_dir = sysconfig.get_config_var('srcdir')
+        src_dir = sysconfig.get_config_var('abs_srcdir')
+        if not src_dir:
+            src_dir = sysconfig.get_config_var('srcdir')
         src_dir = os.path.abspath(src_dir)
+        if not os.path.exists(src_dir):
+            self.skipTest(f"cannot access Python source code directory:"
+                          f" {src_dir!r}")
 
         ignored = {'.git', '__pycache__'}
 
index bb15941464e3d1eccbcfd2d7da509bcda8fe0d1d..cdf77c57bbb6aeba289a27f6f43a706f462a50b0 100644 (file)
@@ -7,9 +7,16 @@ import sysconfig
 from test import support
 
 
+def get_python_source_dir():
+    src_dir = sysconfig.get_config_var('abs_srcdir')
+    if not src_dir:
+        src_dir = sysconfig.get_config_var('srcdir')
+    return os.path.abspath(src_dir)
+
+
 TESTS_DIR = os.path.dirname(__file__)
 TOOL_ROOT = os.path.dirname(TESTS_DIR)
-SRCDIR = os.path.abspath(sysconfig.get_config_var('srcdir'))
+SRCDIR = get_python_source_dir()
 
 MAKE = shutil.which('make')
 FREEZE = os.path.join(TOOL_ROOT, 'freeze.py')
index fa3a43af6e604826b6ea3c3b1afe9f4505865882..e3959ce428c7c50a93e23ab88686d49b3c1e5e49 100755 (executable)
@@ -11,6 +11,13 @@ import reindent
 import untabify
 
 
+def get_python_source_dir():
+    src_dir = sysconfig.get_config_var('abs_srcdir')
+    if not src_dir:
+        src_dir = sysconfig.get_config_var('srcdir')
+    return os.path.abspath(src_dir)
+
+
 # Excluded directories which are copies of external libraries:
 # don't check their coding style
 EXCLUDE_DIRS = [
@@ -18,7 +25,7 @@ EXCLUDE_DIRS = [
     os.path.join('Modules', 'expat'),
     os.path.join('Modules', 'zlib'),
     ]
-SRCDIR = sysconfig.get_config_var('srcdir')
+SRCDIR = get_python_source_dir()
 
 
 def n_files_str(count):