mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
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
(cherry picked from commit 987af36a71)
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Ćukasz Langa <lukasz@langa.pl>
Co-authored-by: Emma Smith <emma@emmatyping.dev>
77 lines
2.8 KiB
Python
77 lines
2.8 KiB
Python
"""Do a minimal test of all the modules that aren't otherwise tested."""
|
|
import importlib
|
|
import platform
|
|
import sys
|
|
from test import support
|
|
import unittest
|
|
import sys
|
|
|
|
class TestUntestedModules(unittest.TestCase):
|
|
def test_untested_modules_can_be_imported(self):
|
|
untested = ('encodings', 'formatter')
|
|
with support.check_warnings(quiet=True):
|
|
for name in untested:
|
|
try:
|
|
support.import_module('test.test_{}'.format(name))
|
|
except unittest.SkipTest:
|
|
importlib.import_module(name)
|
|
else:
|
|
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 support.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
|
|
import distutils.filelist
|
|
import distutils.text_file
|
|
import distutils.unixccompiler
|
|
|
|
import distutils.command.bdist_dumb
|
|
if sys.platform.startswith('win') and not platform.win32_is_iot():
|
|
import distutils.command.bdist_msi
|
|
import distutils.command.bdist
|
|
import distutils.command.bdist_rpm
|
|
import distutils.command.bdist_wininst
|
|
import distutils.command.build_clib
|
|
import distutils.command.build_ext
|
|
import distutils.command.build
|
|
import distutils.command.clean
|
|
import distutils.command.config
|
|
import distutils.command.install_data
|
|
import distutils.command.install_egg_info
|
|
import distutils.command.install_headers
|
|
import distutils.command.install_lib
|
|
import distutils.command.register
|
|
import distutils.command.sdist
|
|
import distutils.command.upload
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|