Skip to content

Commit

Permalink
[3.11] gh-109615: Fix support test_copy_python_src_ignore() (#109958) (
Browse files Browse the repository at this point in the history
…#109962)

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".

(cherry picked from commit b89ed9d)
  • Loading branch information
vstinner committed Sep 27, 2023
1 parent 2423168 commit 8ac20e5
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 8 deletions.
12 changes: 7 additions & 5 deletions Lib/test/libregrtest/main.py
Expand Up @@ -731,11 +731,13 @@ def set_temp_dir(self):
if sysconfig.is_python_build():
self.tmp_dir = sysconfig.get_config_var('abs_builddir')
if self.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.
self.tmp_dir = sysconfig.get_config_var('srcdir')
self.tmp_dir = sysconfig.get_config_var('abs_srcdir')
if not self.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.
self.tmp_dir = sysconfig.get_config_var('srcdir')
self.tmp_dir = os.path.join(self.tmp_dir, 'build')
else:
self.tmp_dir = tempfile.gettempdir()
Expand Down
3 changes: 3 additions & 0 deletions Lib/test/pythoninfo.py
Expand Up @@ -524,7 +524,10 @@ def collect_sysconfig(info_add):
'Py_NOGIL',
'SHELL',
'SOABI',
'abs_builddir',
'abs_srcdir',
'prefix',
'srcdir',
):
value = sysconfig.get_config_var(name)
if name == 'ANDROID_API_LEVEL' and not value:
Expand Down
7 changes: 6 additions & 1 deletion Lib/test/test_support.py
Expand Up @@ -779,8 +779,13 @@ def recursive_function(depth):
#self.assertEqual(available, 2)

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

Expand Down
9 changes: 8 additions & 1 deletion Tools/freeze/test/freeze.py
Expand Up @@ -7,9 +7,16 @@
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')
Expand Down
9 changes: 8 additions & 1 deletion Tools/scripts/patchcheck.py
Expand Up @@ -11,14 +11,21 @@
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 = [os.path.join('Modules', '_ctypes', 'libffi_osx'),
os.path.join('Modules', '_ctypes', 'libffi_msvc'),
os.path.join('Modules', '_decimal', 'libmpdec'),
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):
Expand Down

0 comments on commit 8ac20e5

Please sign in to comment.