mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
[3.11] gh-135374: Adjust test for setuptools' replacement of distutils (GH-138796)
Some checks failed
Tests / Check for source changes (push) Has been cancelled
Lint / lint (push) Has been cancelled
Tests / Ubuntu (push) Has been cancelled
Tests / Docs (push) Has been cancelled
Tests / Check if the ABI has changed (push) Has been cancelled
Tests / Check if generated files are up to date (push) Has been cancelled
Tests / Windows (push) Has been cancelled
Tests / macOS (push) Has been cancelled
Tests / Ubuntu SSL tests with OpenSSL (push) Has been cancelled
Tests / Address sanitizer (push) Has been cancelled
Tests / All required checks pass (push) Has been cancelled
Some checks failed
Tests / Check for source changes (push) Has been cancelled
Lint / lint (push) Has been cancelled
Tests / Ubuntu (push) Has been cancelled
Tests / Docs (push) Has been cancelled
Tests / Check if the ABI has changed (push) Has been cancelled
Tests / Check if generated files are up to date (push) Has been cancelled
Tests / Windows (push) Has been cancelled
Tests / macOS (push) Has been cancelled
Tests / Ubuntu SSL tests with OpenSSL (push) Has been cancelled
Tests / Address sanitizer (push) Has been cancelled
Tests / All required checks pass (push) Has been cancelled
ensurepip installs a bundled copy of distutils, which overrides the stdlib module. This affects several tests. This commit: - skips distutils in test___all__, as we're unlikely to break `__all__` in a security-fix-only branch (and if we do it's not much of a a big deal) - skips importability tests of distutils submodules if the setuptools hack is detected Co-authored-by: Łukasz Langa <lukasz@langa.pl> Co-authored-by: Emma Smith <emma@emmatyping.dev>
This commit is contained in:
parent
262aa73bd7
commit
987af36a71
2 changed files with 33 additions and 7 deletions
|
|
@ -80,6 +80,12 @@ class AllTest(unittest.TestCase):
|
|||
self.assertEqual(keys, all_set, "in module {}".format(modname))
|
||||
|
||||
def walk_modules(self, basedir, modpath):
|
||||
if modpath == 'distutils.':
|
||||
# gh-135374: when setuptools is installed, it now replaces
|
||||
# 'distutils' with its own version.
|
||||
# In a security-fix only branch of CPython,
|
||||
# skip the __all__ test rather than deal with the fallout.
|
||||
return
|
||||
for fn in sorted(os.listdir(basedir)):
|
||||
path = os.path.join(basedir, fn)
|
||||
if os.path.isdir(path):
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from test import support
|
|||
from test.support import import_helper
|
||||
from test.support import warnings_helper
|
||||
import unittest
|
||||
import sys
|
||||
|
||||
class TestUntestedModules(unittest.TestCase):
|
||||
def test_untested_modules_can_be_imported(self):
|
||||
|
|
@ -18,6 +19,32 @@ class TestUntestedModules(unittest.TestCase):
|
|||
self.fail('{} has tests even though test_sundry claims '
|
||||
'otherwise'.format(name))
|
||||
|
||||
import html.entities
|
||||
|
||||
try:
|
||||
import tty # Not available on Windows
|
||||
except ImportError:
|
||||
if support.verbose:
|
||||
print("skipping tty")
|
||||
|
||||
def test_distutils_modules(self):
|
||||
with warnings_helper.check_warnings(quiet=True):
|
||||
|
||||
path_copy = sys.path[:]
|
||||
import distutils
|
||||
if '_distutils_hack' in sys.modules:
|
||||
# gh-135374: when 'setuptools' is installed, it now replaces
|
||||
# 'distutils' with its own version.
|
||||
# This imports '_distutils_hack' and modifies sys.path.
|
||||
# The setuptols version of distutils also does not include some
|
||||
# of the modules tested here.
|
||||
|
||||
# Undo the path modifications and skip the test.
|
||||
|
||||
sys.path[:] = path_copy
|
||||
raise unittest.SkipTest(
|
||||
'setuptools has replaced distutils with its own version')
|
||||
|
||||
import distutils.bcppcompiler
|
||||
import distutils.ccompiler
|
||||
import distutils.cygwinccompiler
|
||||
|
|
@ -41,13 +68,6 @@ class TestUntestedModules(unittest.TestCase):
|
|||
import distutils.command.sdist
|
||||
import distutils.command.upload
|
||||
|
||||
import html.entities
|
||||
|
||||
try:
|
||||
import tty # Not available on Windows
|
||||
except ImportError:
|
||||
if support.verbose:
|
||||
print("skipping tty")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue