From 6b2e7d107fd8b79d3adc374cb90b626110182b7e Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 25 Oct 2023 13:13:36 +0300 Subject: [PATCH] [3.11] gh-111309: Use unittest to collect and run distutils tests * use unittest.main() instead of run_unittest(test_suite()) to run tests from modules via the CLI * add explicit load_tests() to load doctests * use test.support.load_package_tests() to load tests in submodules of distutils.tests * removes no longer needed test_suite() functions --- Lib/distutils/tests/__init__.py | 36 +++++++------------ Lib/distutils/tests/test_archive_util.py | 7 ++-- Lib/distutils/tests/test_bdist.py | 7 +--- Lib/distutils/tests/test_bdist_dumb.py | 6 +--- Lib/distutils/tests/test_bdist_rpm.py | 7 ++-- Lib/distutils/tests/test_build.py | 6 +--- Lib/distutils/tests/test_build_clib.py | 7 ++-- Lib/distutils/tests/test_build_ext.py | 8 +---- Lib/distutils/tests/test_build_py.py | 7 ++-- Lib/distutils/tests/test_build_scripts.py | 6 +--- Lib/distutils/tests/test_check.py | 6 +--- Lib/distutils/tests/test_clean.py | 6 +--- Lib/distutils/tests/test_cmd.py | 7 ++-- Lib/distutils/tests/test_config.py | 6 +--- Lib/distutils/tests/test_config_cmd.py | 7 ++-- Lib/distutils/tests/test_core.py | 7 ++-- Lib/distutils/tests/test_cygwinccompiler.py | 6 +--- Lib/distutils/tests/test_dep_util.py | 6 +--- Lib/distutils/tests/test_dir_util.py | 7 ++-- Lib/distutils/tests/test_dist.py | 10 ++---- Lib/distutils/tests/test_extension.py | 6 +--- Lib/distutils/tests/test_file_util.py | 6 +--- Lib/distutils/tests/test_filelist.py | 11 ++---- Lib/distutils/tests/test_install.py | 7 ++-- Lib/distutils/tests/test_install_data.py | 6 +--- Lib/distutils/tests/test_install_headers.py | 6 +--- Lib/distutils/tests/test_install_lib.py | 7 ++-- Lib/distutils/tests/test_install_scripts.py | 6 +--- Lib/distutils/tests/test_log.py | 7 ++-- Lib/distutils/tests/test_msvc9compiler.py | 6 +--- Lib/distutils/tests/test_msvccompiler.py | 6 +--- Lib/distutils/tests/test_register.py | 6 +--- Lib/distutils/tests/test_sdist.py | 7 ++-- Lib/distutils/tests/test_spawn.py | 7 ++-- Lib/distutils/tests/test_sysconfig.py | 10 ++---- Lib/distutils/tests/test_text_file.py | 6 +--- Lib/distutils/tests/test_unixccompiler.py | 6 +--- Lib/distutils/tests/test_upload.py | 6 +--- Lib/distutils/tests/test_util.py | 6 +--- Lib/distutils/tests/test_version.py | 6 +--- Lib/distutils/tests/test_versionpredicate.py | 8 ++--- Lib/test/test_distutils.py | 12 ++----- ...-10-25-13-13-30.gh-issue-111309.Re7orL.rst | 1 + 43 files changed, 75 insertions(+), 245 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2023-10-25-13-13-30.gh-issue-111309.Re7orL.rst diff --git a/Lib/distutils/tests/__init__.py b/Lib/distutils/tests/__init__.py index 16d011fd9ee6e74..d7922ffa0113939 100644 --- a/Lib/distutils/tests/__init__.py +++ b/Lib/distutils/tests/__init__.py @@ -1,9 +1,7 @@ """Test suite for distutils. This test suite consists of a collection of test modules in the -distutils.tests package. Each test module has a name starting with -'test' and contains a function test_suite(). The function is expected -to return an initialized unittest.TestSuite instance. +distutils.tests package. Tests for the command classes in the distutils.command package are included in distutils.tests as well, instead of using a separate @@ -13,29 +11,21 @@ """ import os -import sys import unittest -from test.support import run_unittest from test.support.warnings_helper import save_restore_warnings_filters +from test.support import warnings_helper +from test.support import load_package_tests -here = os.path.dirname(__file__) or os.curdir - - -def test_suite(): - suite = unittest.TestSuite() - for fn in os.listdir(here): - if fn.startswith("test") and fn.endswith(".py"): - modname = "distutils.tests." + fn[:-3] - # bpo-40055: Save/restore warnings filters to leave them unchanged. - # Importing tests imports docutils which imports pkg_resources - # which adds a warnings filter. - with save_restore_warnings_filters(): - __import__(modname) - module = sys.modules[modname] - suite.addTest(module.test_suite()) - return suite - +def load_tests(*args): + # bpo-40055: Save/restore warnings filters to leave them unchanged. + # Importing tests imports docutils which imports pkg_resources + # which adds a warnings filter. + with (save_restore_warnings_filters(), + warnings_helper.check_warnings( + ("The distutils.sysconfig module is deprecated", DeprecationWarning), + quiet=True)): + return load_package_tests(os.path.dirname(__file__), *args) if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py index 8aec84078ed48f9..66aee1b44b2032e 100644 --- a/Lib/distutils/tests/test_archive_util.py +++ b/Lib/distutils/tests/test_archive_util.py @@ -13,7 +13,7 @@ ARCHIVE_FORMATS) from distutils.spawn import find_executable, spawn from distutils.tests import support -from test.support import run_unittest, patch +from test.support import patch from test.support.os_helper import change_cwd from test.support.warnings_helper import check_warnings @@ -389,8 +389,5 @@ def test_tarfile_root_owner(self): finally: archive.close() -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(ArchiveUtilTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_bdist.py b/Lib/distutils/tests/test_bdist.py index 241fc9ad75f34b8..c53f0ccb17239be 100644 --- a/Lib/distutils/tests/test_bdist.py +++ b/Lib/distutils/tests/test_bdist.py @@ -1,7 +1,6 @@ """Tests for distutils.command.bdist.""" import os import unittest -from test.support import run_unittest import warnings with warnings.catch_warnings(): @@ -44,9 +43,5 @@ def test_skip_build(self): '%s should take --skip-build from bdist' % name) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildTestCase) - - if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_bdist_dumb.py b/Lib/distutils/tests/test_bdist_dumb.py index bb860c8ac70345a..b41812bccf692a8 100644 --- a/Lib/distutils/tests/test_bdist_dumb.py +++ b/Lib/distutils/tests/test_bdist_dumb.py @@ -4,7 +4,6 @@ import sys import zipfile import unittest -from test.support import run_unittest from distutils.core import Distribution from distutils.command.bdist_dumb import bdist_dumb @@ -90,8 +89,5 @@ def test_simple_built(self): wanted.append('foo.%s.pyc' % sys.implementation.cache_tag) self.assertEqual(contents, sorted(wanted)) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildDumbTestCase) - if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_bdist_rpm.py b/Lib/distutils/tests/test_bdist_rpm.py index 7eefa7b9cad84ff..ea9a0bc33623e87 100644 --- a/Lib/distutils/tests/test_bdist_rpm.py +++ b/Lib/distutils/tests/test_bdist_rpm.py @@ -3,7 +3,7 @@ import unittest import sys import os -from test.support import run_unittest, requires_zlib +from test.support import requires_zlib from distutils.core import Distribution from distutils.command.bdist_rpm import bdist_rpm @@ -134,8 +134,5 @@ def test_no_optimize_flag(self): os.remove(os.path.join(pkg_dir, 'dist', 'foo-0.1-1.noarch.rpm')) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildRpmTestCase) - if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_build.py b/Lib/distutils/tests/test_build.py index 71b5e164bae14aa..c7c564d04774db5 100644 --- a/Lib/distutils/tests/test_build.py +++ b/Lib/distutils/tests/test_build.py @@ -2,7 +2,6 @@ import unittest import os import sys -from test.support import run_unittest from distutils.command.build import build from distutils.tests import support @@ -50,8 +49,5 @@ def test_finalize_options(self): # executable is os.path.normpath(sys.executable) self.assertEqual(cmd.executable, os.path.normpath(sys.executable)) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_build_clib.py b/Lib/distutils/tests/test_build_clib.py index 95f928288e00483..0c3bc49e8e9760a 100644 --- a/Lib/distutils/tests/test_build_clib.py +++ b/Lib/distutils/tests/test_build_clib.py @@ -5,7 +5,7 @@ import sysconfig from test.support import ( - run_unittest, missing_compiler_executable, requires_subprocess + missing_compiler_executable, requires_subprocess ) from distutils.command.build_clib import build_clib @@ -140,8 +140,5 @@ def test_run(self): # let's check the result self.assertIn('libfoo.a', os.listdir(build_temp)) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildCLibTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index 4ebeafecef03c34..e89dc50665be473 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -545,11 +545,5 @@ def build_ext(self, *args, **kwargs): return build_ext -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(BuildExtTestCase)) - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(ParallelBuildExtTestCase)) - return suite - if __name__ == '__main__': - support.run_unittest(__name__) + unittest.main() diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py index 44a06cc963aa3c6..a7035e5a3fd9ddf 100644 --- a/Lib/distutils/tests/test_build_py.py +++ b/Lib/distutils/tests/test_build_py.py @@ -9,7 +9,7 @@ from distutils.errors import DistutilsFileError from distutils.tests import support -from test.support import run_unittest, requires_subprocess +from test.support import requires_subprocess class BuildPyTestCase(support.TempdirManager, @@ -174,8 +174,5 @@ def test_dont_write_bytecode(self): self.logs[0][1] % self.logs[0][2]) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildPyTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_build_scripts.py b/Lib/distutils/tests/test_build_scripts.py index f299e51ef79fac1..485f4f050a5dba4 100644 --- a/Lib/distutils/tests/test_build_scripts.py +++ b/Lib/distutils/tests/test_build_scripts.py @@ -8,7 +8,6 @@ from distutils import sysconfig from distutils.tests import support -from test.support import run_unittest class BuildScriptsTestCase(support.TempdirManager, @@ -105,8 +104,5 @@ def test_version_int(self): for name in expected: self.assertIn(name, built) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(BuildScriptsTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_check.py b/Lib/distutils/tests/test_check.py index 91bcdceb43bc69f..1e86b948d22449b 100644 --- a/Lib/distutils/tests/test_check.py +++ b/Lib/distutils/tests/test_check.py @@ -2,7 +2,6 @@ import os import textwrap import unittest -from test.support import run_unittest from distutils.command.check import check, HAS_DOCUTILS from distutils.tests import support @@ -156,8 +155,5 @@ def test_check_all(self): {}, **{'strict': 1, 'restructuredtext': 1}) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(CheckTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_clean.py b/Lib/distutils/tests/test_clean.py index 92367499cefc046..ccbb01e167e1cd9 100644 --- a/Lib/distutils/tests/test_clean.py +++ b/Lib/distutils/tests/test_clean.py @@ -4,7 +4,6 @@ from distutils.command.clean import clean from distutils.tests import support -from test.support import run_unittest class cleanTestCase(support.TempdirManager, support.LoggingSilencer, @@ -42,8 +41,5 @@ def test_simple_run(self): cmd.ensure_finalized() cmd.run() -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(cleanTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_cmd.py b/Lib/distutils/tests/test_cmd.py index 2319214a9e332b8..90310078b1c29a2 100644 --- a/Lib/distutils/tests/test_cmd.py +++ b/Lib/distutils/tests/test_cmd.py @@ -1,7 +1,7 @@ """Tests for distutils.cmd.""" import unittest import os -from test.support import captured_stdout, run_unittest +from test.support import captured_stdout from distutils.cmd import Command from distutils.dist import Distribution @@ -119,8 +119,5 @@ def test_debug_print(self): finally: debug.DEBUG = False -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(CommandTestCase) - if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_config.py b/Lib/distutils/tests/test_config.py index 8ab70efb161cbd8..cb8e7237abd9e12 100644 --- a/Lib/distutils/tests/test_config.py +++ b/Lib/distutils/tests/test_config.py @@ -8,7 +8,6 @@ from distutils.log import WARN from distutils.tests import support -from test.support import run_unittest PYPIRC = """\ [distutils] @@ -134,8 +133,5 @@ def test_config_interpolation(self): self.assertEqual(config, waited) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(PyPIRCCommandTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_config_cmd.py b/Lib/distutils/tests/test_config_cmd.py index c79db68aae115d1..4f132ce3d185cce 100644 --- a/Lib/distutils/tests/test_config_cmd.py +++ b/Lib/distutils/tests/test_config_cmd.py @@ -4,7 +4,7 @@ import sys import sysconfig from test.support import ( - run_unittest, missing_compiler_executable, requires_subprocess + missing_compiler_executable, requires_subprocess ) from distutils.command.config import dump_file, config @@ -96,8 +96,5 @@ def test_clean(self): for f in (f1, f2): self.assertFalse(os.path.exists(f)) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(ConfigTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_core.py b/Lib/distutils/tests/test_core.py index 700a22da045d454..59fb16bdec28cbd 100644 --- a/Lib/distutils/tests/test_core.py +++ b/Lib/distutils/tests/test_core.py @@ -5,7 +5,7 @@ import os import shutil import sys -from test.support import captured_stdout, run_unittest +from test.support import captured_stdout from test.support import os_helper import unittest from distutils.tests import support @@ -133,8 +133,5 @@ def test_debug_mode(self): wanted = "options (after parsing config files):\n" self.assertEqual(stdout.readlines()[0], wanted) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(CoreTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_cygwinccompiler.py b/Lib/distutils/tests/test_cygwinccompiler.py index 0912ffd15c8ee96..633d3041a1bee4c 100644 --- a/Lib/distutils/tests/test_cygwinccompiler.py +++ b/Lib/distutils/tests/test_cygwinccompiler.py @@ -3,7 +3,6 @@ import sys import os from io import BytesIO -from test.support import run_unittest from distutils import cygwinccompiler from distutils.cygwinccompiler import (check_config_h, @@ -147,8 +146,5 @@ def test_get_msvcr(self): '[MSC v.1999 32 bits (Intel)]') self.assertRaises(ValueError, get_msvcr) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(CygwinCCompilerTestCase) - if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_dep_util.py b/Lib/distutils/tests/test_dep_util.py index 0d52740a9edda39..ef52900b91af370 100644 --- a/Lib/distutils/tests/test_dep_util.py +++ b/Lib/distutils/tests/test_dep_util.py @@ -5,7 +5,6 @@ from distutils.dep_util import newer, newer_pairwise, newer_group from distutils.errors import DistutilsFileError from distutils.tests import support -from test.support import run_unittest class DepUtilTestCase(support.TempdirManager, unittest.TestCase): @@ -73,8 +72,5 @@ def test_newer_group(self): missing='newer')) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(DepUtilTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_dir_util.py b/Lib/distutils/tests/test_dir_util.py index ebd89f320dca893..bae9c3ed56c8304 100644 --- a/Lib/distutils/tests/test_dir_util.py +++ b/Lib/distutils/tests/test_dir_util.py @@ -11,7 +11,7 @@ from distutils import log from distutils.tests import support -from test.support import run_unittest, is_emscripten, is_wasi +from test.support import is_emscripten, is_wasi class DirUtilTestCase(support.TempdirManager, unittest.TestCase): @@ -136,8 +136,5 @@ def test_copy_tree_exception_in_listdir(self): dir_util.copy_tree(src, None) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(DirUtilTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py index 2ef70d987f36bb4..8ab24516e7073a0 100644 --- a/Lib/distutils/tests/test_dist.py +++ b/Lib/distutils/tests/test_dist.py @@ -12,7 +12,7 @@ from distutils.cmd import Command from test.support import ( - captured_stdout, captured_stderr, run_unittest + captured_stdout, captured_stderr ) from test.support.os_helper import TESTFN from distutils.tests import support @@ -519,11 +519,5 @@ def test_read_metadata(self): self.assertEqual(metadata.obsoletes, None) self.assertEqual(metadata.requires, ['foo']) -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(DistributionTestCase)) - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(MetadataTestCase)) - return suite - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_extension.py b/Lib/distutils/tests/test_extension.py index 2b08930eafb10a5..f9cdef254165495 100644 --- a/Lib/distutils/tests/test_extension.py +++ b/Lib/distutils/tests/test_extension.py @@ -3,7 +3,6 @@ import os import warnings -from test.support import run_unittest from test.support.warnings_helper import check_warnings from distutils.extension import read_setup_file, Extension @@ -63,8 +62,5 @@ def test_extension_init(self): self.assertEqual(str(w.warnings[0].message), "Unknown Extension options: 'chic'") -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(ExtensionTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_file_util.py b/Lib/distutils/tests/test_file_util.py index 551151b0143661b..76ef6e9743d381c 100644 --- a/Lib/distutils/tests/test_file_util.py +++ b/Lib/distutils/tests/test_file_util.py @@ -8,7 +8,6 @@ from distutils import log from distutils.tests import support from distutils.errors import DistutilsFileError -from test.support import run_unittest from test.support.os_helper import unlink @@ -119,8 +118,5 @@ def test_copy_file_hard_link_failure(self): self.assertEqual(f.read(), 'some content') -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(FileUtilTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_filelist.py b/Lib/distutils/tests/test_filelist.py index 98c97e49f80db57..216cf27f493e028 100644 --- a/Lib/distutils/tests/test_filelist.py +++ b/Lib/distutils/tests/test_filelist.py @@ -9,7 +9,7 @@ from distutils import filelist from test.support import os_helper -from test.support import captured_stdout, run_unittest +from test.support import captured_stdout from distutils.tests import support MANIFEST_IN = """\ @@ -329,12 +329,5 @@ def test_non_local_discovery(self): self.assertEqual(filelist.findall(temp_dir), expected) -def test_suite(): - return unittest.TestSuite([ - unittest.TestLoader().loadTestsFromTestCase(FileListTestCase), - unittest.TestLoader().loadTestsFromTestCase(FindAllTestCase), - ]) - - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py index c38f98b8b2c2949..c30414d5cb24fa2 100644 --- a/Lib/distutils/tests/test_install.py +++ b/Lib/distutils/tests/test_install.py @@ -5,7 +5,7 @@ import unittest import site -from test.support import captured_stdout, run_unittest, requires_subprocess +from test.support import captured_stdout, requires_subprocess from distutils import sysconfig from distutils.command.install import install, HAS_USER_SITE @@ -254,8 +254,5 @@ def test_debug_mode(self): self.assertGreater(len(self.logs), old_logs_len) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(InstallTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_install_data.py b/Lib/distutils/tests/test_install_data.py index 6191d2fa6eefab3..c5c04a36e124011 100644 --- a/Lib/distutils/tests/test_install_data.py +++ b/Lib/distutils/tests/test_install_data.py @@ -4,7 +4,6 @@ from distutils.command.install_data import install_data from distutils.tests import support -from test.support import run_unittest class InstallDataTestCase(support.TempdirManager, support.LoggingSilencer, @@ -68,8 +67,5 @@ def test_simple_run(self): self.assertTrue(os.path.exists(os.path.join(inst2, rtwo))) self.assertTrue(os.path.exists(os.path.join(inst, rone))) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(InstallDataTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_install_headers.py b/Lib/distutils/tests/test_install_headers.py index 1aa4d09cdef731c..f8f513217fc6a97 100644 --- a/Lib/distutils/tests/test_install_headers.py +++ b/Lib/distutils/tests/test_install_headers.py @@ -4,7 +4,6 @@ from distutils.command.install_headers import install_headers from distutils.tests import support -from test.support import run_unittest class InstallHeadersTestCase(support.TempdirManager, support.LoggingSilencer, @@ -32,8 +31,5 @@ def test_simple_run(self): # let's check the results self.assertEqual(len(cmd.get_outputs()), 2) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(InstallHeadersTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_install_lib.py b/Lib/distutils/tests/test_install_lib.py index f840d1a94665ed5..08bc9c842693765 100644 --- a/Lib/distutils/tests/test_install_lib.py +++ b/Lib/distutils/tests/test_install_lib.py @@ -8,7 +8,7 @@ from distutils.extension import Extension from distutils.tests import support from distutils.errors import DistutilsOptionError -from test.support import run_unittest, requires_subprocess +from test.support import requires_subprocess class InstallLibTestCase(support.TempdirManager, @@ -110,8 +110,5 @@ def test_dont_write_bytecode(self): self.logs[0][1] % self.logs[0][2]) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(InstallLibTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_install_scripts.py b/Lib/distutils/tests/test_install_scripts.py index 648db3b11da7456..b4272d6f90faea6 100644 --- a/Lib/distutils/tests/test_install_scripts.py +++ b/Lib/distutils/tests/test_install_scripts.py @@ -7,7 +7,6 @@ from distutils.core import Distribution from distutils.tests import support -from test.support import run_unittest class InstallScriptsTestCase(support.TempdirManager, @@ -75,8 +74,5 @@ def write_script(name, text): self.assertIn(name, installed) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(InstallScriptsTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_log.py b/Lib/distutils/tests/test_log.py index ec2ae028de87774..0f3250313fdeada 100644 --- a/Lib/distutils/tests/test_log.py +++ b/Lib/distutils/tests/test_log.py @@ -3,7 +3,7 @@ import io import sys import unittest -from test.support import swap_attr, run_unittest +from test.support import swap_attr from distutils import log @@ -39,8 +39,5 @@ def test_non_ascii(self): 'Fαtal\trrr' if errors == 'ignore' else 'Fαtal\t\\xc8rr\\u014dr') -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(TestLog) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_msvc9compiler.py b/Lib/distutils/tests/test_msvc9compiler.py index 6235405e31201b2..60b99e25f8a02ce 100644 --- a/Lib/distutils/tests/test_msvc9compiler.py +++ b/Lib/distutils/tests/test_msvc9compiler.py @@ -5,7 +5,6 @@ from distutils.errors import DistutilsPlatformError from distutils.tests import support -from test.support import run_unittest # A manifest with the only assembly reference being the msvcrt assembly, so # should have the assembly completely stripped. Note that although the @@ -177,8 +176,5 @@ def test_remove_entire_manifest(self): self.assertIsNone(got) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(msvc9compilerTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_msvccompiler.py b/Lib/distutils/tests/test_msvccompiler.py index dd67c3eb6d519d0..7b3a6bbe7fda9d7 100644 --- a/Lib/distutils/tests/test_msvccompiler.py +++ b/Lib/distutils/tests/test_msvccompiler.py @@ -5,7 +5,6 @@ from distutils.errors import DistutilsPlatformError from distutils.tests import support -from test.support import run_unittest SKIP_MESSAGE = (None if sys.platform == "win32" else @@ -74,8 +73,5 @@ def test_get_vc2015(self): else: raise unittest.SkipTest("VS 2015 is not installed") -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(msvccompilerTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_register.py b/Lib/distutils/tests/test_register.py index 7805c6d3c9f7b9c..33f9443358ff271 100644 --- a/Lib/distutils/tests/test_register.py +++ b/Lib/distutils/tests/test_register.py @@ -5,7 +5,6 @@ import urllib import warnings -from test.support import run_unittest from test.support.warnings_helper import check_warnings from distutils.command import register as register_module @@ -317,8 +316,5 @@ def test_show_response(self): self.assertEqual(results[3], 75 * '-' + '\nxxx\n' + 75 * '-') -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(RegisterTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py index 46b3a13e470c4ea..58497fe08756727 100644 --- a/Lib/distutils/tests/test_sdist.py +++ b/Lib/distutils/tests/test_sdist.py @@ -6,7 +6,7 @@ import zipfile from os.path import join from textwrap import dedent -from test.support import captured_stdout, run_unittest +from test.support import captured_stdout from test.support.warnings_helper import check_warnings try: @@ -486,8 +486,5 @@ def test_make_distribution_owner_group(self): finally: archive.close() -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(SDistTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_spawn.py b/Lib/distutils/tests/test_spawn.py index a0a1145da5df8e0..30bbe2a283ba20c 100644 --- a/Lib/distutils/tests/test_spawn.py +++ b/Lib/distutils/tests/test_spawn.py @@ -3,7 +3,7 @@ import stat import sys import unittest.mock -from test.support import run_unittest, unix_shell, requires_subprocess +from test.support import unix_shell, requires_subprocess from test.support import os_helper from distutils.spawn import find_executable @@ -132,8 +132,5 @@ def test_spawn_missing_exe(self): self.assertIn("command 'does-not-exist' failed", str(ctx.exception)) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(SpawnTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py index 6833d22af5fe2a6..363834fe8b3a347 100644 --- a/Lib/distutils/tests/test_sysconfig.py +++ b/Lib/distutils/tests/test_sysconfig.py @@ -10,7 +10,7 @@ from distutils import sysconfig from distutils.ccompiler import get_default_compiler from distutils.tests import support -from test.support import run_unittest, swap_item, requires_subprocess, is_wasi +from test.support import swap_item, requires_subprocess, is_wasi from test.support.os_helper import TESTFN from test.support.warnings_helper import check_warnings @@ -254,11 +254,5 @@ def test_customize_compiler_before_get_config_vars(self): self.assertEqual(0, p.returncode, "Subprocess failed: " + outs) -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(SysconfigTestCase)) - return suite - - if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_text_file.py b/Lib/distutils/tests/test_text_file.py index ebac3d52f9097c2..fbf48515a1da70d 100644 --- a/Lib/distutils/tests/test_text_file.py +++ b/Lib/distutils/tests/test_text_file.py @@ -3,7 +3,6 @@ import unittest from distutils.text_file import TextFile from distutils.tests import support -from test.support import run_unittest TEST_DATA = """# test file @@ -100,8 +99,5 @@ def test_input(count, description, file, expected_result): finally: in_file.close() -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(TextFileTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_unixccompiler.py b/Lib/distutils/tests/test_unixccompiler.py index a3484d4f94cd921..6a6592527c76598 100644 --- a/Lib/distutils/tests/test_unixccompiler.py +++ b/Lib/distutils/tests/test_unixccompiler.py @@ -1,7 +1,6 @@ """Tests for distutils.unixccompiler.""" import sys import unittest -from test.support import run_unittest from test.support.os_helper import EnvironmentVarGuard from distutils import sysconfig @@ -138,8 +137,5 @@ def gcv(v): self.assertEqual(self.cc.linker_so[0], 'my_ld') -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(UnixCCompilerTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py index d67974148830609..9aae88bed582da3 100644 --- a/Lib/distutils/tests/test_upload.py +++ b/Lib/distutils/tests/test_upload.py @@ -4,7 +4,6 @@ import unittest.mock as mock from urllib.error import HTTPError -from test.support import run_unittest from distutils.command import upload as upload_mod from distutils.command.upload import upload @@ -216,8 +215,5 @@ def test_wrong_exception_order(self): self.clear_logs() -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(uploadTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py index f9c223f06ec68d8..1b002cb35be1d05 100644 --- a/Lib/distutils/tests/test_util.py +++ b/Lib/distutils/tests/test_util.py @@ -3,7 +3,6 @@ import sys import unittest from copy import copy -from test.support import run_unittest from unittest import mock from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError @@ -306,8 +305,5 @@ def test_grok_environment_error(self): self.assertEqual(msg, "error: Unable to find batch file") -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(UtilTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_version.py b/Lib/distutils/tests/test_version.py index 1563e0227b60dde..f102f2953ff50f0 100644 --- a/Lib/distutils/tests/test_version.py +++ b/Lib/distutils/tests/test_version.py @@ -2,7 +2,6 @@ import unittest from distutils.version import LooseVersion from distutils.version import StrictVersion -from test.support import run_unittest class VersionTestCase(unittest.TestCase): @@ -80,8 +79,5 @@ def test_cmp(self): 'cmp(%s, %s) should be NotImplemented, got %s' % (v1, v2, res)) -def test_suite(): - return unittest.TestLoader().loadTestsFromTestCase(VersionTestCase) - if __name__ == "__main__": - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/distutils/tests/test_versionpredicate.py b/Lib/distutils/tests/test_versionpredicate.py index 28ae09dc2058dab..b0e9ab2cf59b595 100644 --- a/Lib/distutils/tests/test_versionpredicate.py +++ b/Lib/distutils/tests/test_versionpredicate.py @@ -4,10 +4,10 @@ import distutils.versionpredicate import doctest -from test.support import run_unittest -def test_suite(): - return doctest.DocTestSuite(distutils.versionpredicate) +def load_tests(loader, tests, pattern): + tests.addTest(doctest.DocTestSuite(distutils.versionpredicate)) + return tests if __name__ == '__main__': - run_unittest(test_suite()) + unittest.main() diff --git a/Lib/test/test_distutils.py b/Lib/test/test_distutils.py index 28320fb5c0bfd12..12d1472b975c784 100644 --- a/Lib/test/test_distutils.py +++ b/Lib/test/test_distutils.py @@ -1,8 +1,6 @@ """Tests for distutils. -The tests for distutils are defined in the distutils.tests package; -the test_suite() function there returns a test suite that's ready to -be run. +The tests for distutils are defined in the distutils.tests package. """ import unittest @@ -12,13 +10,7 @@ with warnings_helper.check_warnings( ("The distutils package is deprecated", DeprecationWarning), quiet=True): - import distutils.tests - - -def load_tests(*_): - # used by unittest - return distutils.tests.test_suite() - + from distutils.tests import load_tests def tearDownModule(): support.reap_children() diff --git a/Misc/NEWS.d/next/Tests/2023-10-25-13-13-30.gh-issue-111309.Re7orL.rst b/Misc/NEWS.d/next/Tests/2023-10-25-13-13-30.gh-issue-111309.Re7orL.rst new file mode 100644 index 000000000000000..ed0d3947ad3494d --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2023-10-25-13-13-30.gh-issue-111309.Re7orL.rst @@ -0,0 +1 @@ +:mod:`distutils` tests can now be run via :mod:`unittest`.