gh-109615: Fix support test_copy_python_src_ignore() (#109958)

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".
This commit is contained in:
Victor Stinner 2023-09-27 12:32:12 +02:00 committed by GitHub
parent 91fb8daa24
commit b89ed9df39
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 8 deletions

View file

@ -355,10 +355,12 @@ 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:
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.
# 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:

View file

@ -520,6 +520,7 @@ def collect_sysconfig(info_add):
'SHELL',
'SOABI',
'abs_builddir',
'abs_srcdir',
'prefix',
'srcdir',
):

View 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('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__'}

View 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')

View file

@ -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):