]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-111309: Use unittest to collect and run distutils tests (GH-111311)
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 25 Oct 2023 11:57:17 +0000 (14:57 +0300)
committerGitHub <noreply@github.com>
Wed, 25 Oct 2023 11:57:17 +0000 (14:57 +0300)
* 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

43 files changed:
Lib/distutils/tests/__init__.py
Lib/distutils/tests/test_archive_util.py
Lib/distutils/tests/test_bdist.py
Lib/distutils/tests/test_bdist_dumb.py
Lib/distutils/tests/test_bdist_rpm.py
Lib/distutils/tests/test_build.py
Lib/distutils/tests/test_build_clib.py
Lib/distutils/tests/test_build_ext.py
Lib/distutils/tests/test_build_py.py
Lib/distutils/tests/test_build_scripts.py
Lib/distutils/tests/test_check.py
Lib/distutils/tests/test_clean.py
Lib/distutils/tests/test_cmd.py
Lib/distutils/tests/test_config.py
Lib/distutils/tests/test_config_cmd.py
Lib/distutils/tests/test_core.py
Lib/distutils/tests/test_cygwinccompiler.py
Lib/distutils/tests/test_dep_util.py
Lib/distutils/tests/test_dir_util.py
Lib/distutils/tests/test_dist.py
Lib/distutils/tests/test_extension.py
Lib/distutils/tests/test_file_util.py
Lib/distutils/tests/test_filelist.py
Lib/distutils/tests/test_install.py
Lib/distutils/tests/test_install_data.py
Lib/distutils/tests/test_install_headers.py
Lib/distutils/tests/test_install_lib.py
Lib/distutils/tests/test_install_scripts.py
Lib/distutils/tests/test_log.py
Lib/distutils/tests/test_msvc9compiler.py
Lib/distutils/tests/test_msvccompiler.py
Lib/distutils/tests/test_register.py
Lib/distutils/tests/test_sdist.py
Lib/distutils/tests/test_spawn.py
Lib/distutils/tests/test_sysconfig.py
Lib/distutils/tests/test_text_file.py
Lib/distutils/tests/test_unixccompiler.py
Lib/distutils/tests/test_upload.py
Lib/distutils/tests/test_util.py
Lib/distutils/tests/test_version.py
Lib/distutils/tests/test_versionpredicate.py
Lib/test/test_distutils.py
Misc/NEWS.d/next/Tests/2023-10-25-13-13-30.gh-issue-111309.Re7orL.rst [new file with mode: 0644]

index 16d011fd9ee6e749d7e72333b8456e14b7753c38..d7922ffa0113939eccc203e5e0d99328d1a5c0bc 100644 (file)
@@ -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 @@ by import rather than matching pre-defined names.
 """
 
 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()
index 8aec84078ed48f92a358eb4a4167174680518136..66aee1b44b2032ebff09d75ee77e41f0bf0de6d7 100644 (file)
@@ -13,7 +13,7 @@ from distutils.archive_util import (check_archive_formats, make_tarball,
                                     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 @@ class ArchiveUtilTestCase(support.TempdirManager,
         finally:
             archive.close()
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(ArchiveUtilTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index 241fc9ad75f34b8b2874bea1e590765830cff3ab..c53f0ccb17239bee9d18b67ace8cf43711a601a8 100644 (file)
@@ -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 @@ class BuildTestCase(support.TempdirManager,
                             '%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()
index bb860c8ac70345ae3c48b3119241d9f6838587e0..b41812bccf692a8b8b144686d98e1efb7f5353b5 100644 (file)
@@ -4,7 +4,6 @@ import os
 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 @@ class BuildDumbTestCase(support.TempdirManager,
             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()
index 7eefa7b9cad84ffb94fb41044045b0e311bb4eb0..ea9a0bc33623e8723a206052a12e1ab23d78abde 100644 (file)
@@ -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 @@ class BuildRpmTestCase(support.TempdirManager,
 
         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()
index 71b5e164bae14aa4bc42e40e06b129a3cc0a3c2d..c7c564d04774db59a6ea68daff4834daa2f3efcf 100644 (file)
@@ -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 @@ class BuildTestCase(support.TempdirManager,
         # 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()
index 95f928288e00483e2c0dd0aa0a760ab064eaac23..0c3bc49e8e9760a0612aed04a8bfcf42ede9c2fc 100644 (file)
@@ -5,7 +5,7 @@ import sys
 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 @@ class BuildCLibTestCase(support.TempdirManager,
         # 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()
index 4ebeafecef03c346386679affb67b2f45b4a0673..e89dc50665be4736b53089d71a6a29b118960942 100644 (file)
@@ -545,11 +545,5 @@ class ParallelBuildExtTestCase(BuildExtTestCase):
         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()
index 44a06cc963aa3c6e50897abc84c9e921785b2b51..a7035e5a3fd9ddf40cd59104c56d7c362174690c 100644 (file)
@@ -9,7 +9,7 @@ from distutils.core import Distribution
 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 @@ class BuildPyTestCase(support.TempdirManager,
                       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()
index f299e51ef79fac16f61fb71a596c3d159e814c1d..485f4f050a5dba488ef2ce8a8301b1949a4757c4 100644 (file)
@@ -8,7 +8,6 @@ from distutils.core import Distribution
 from distutils import sysconfig
 
 from distutils.tests import support
-from test.support import run_unittest
 
 
 class BuildScriptsTestCase(support.TempdirManager,
@@ -105,8 +104,5 @@ class BuildScriptsTestCase(support.TempdirManager,
         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()
index 91bcdceb43bc69f67a60424b94eaff8eb3a6e3e7..1e86b948d22449b9b8a984d4ddd28e2840431d44 100644 (file)
@@ -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 @@ class CheckTestCase(support.LoggingSilencer,
                           {}, **{'strict': 1,
                                  'restructuredtext': 1})
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(CheckTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index 92367499cefc046fad9aa1941f9bcc1ec6d15a35..ccbb01e167e1cd95ac7a85322c3b8afe1eb946a1 100644 (file)
@@ -4,7 +4,6 @@ import unittest
 
 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 @@ class cleanTestCase(support.TempdirManager,
         cmd.ensure_finalized()
         cmd.run()
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(cleanTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index 2319214a9e332b87a9499968e09dbb19d601683a..90310078b1c29a274ec03fb3259825d7a86a14e1 100644 (file)
@@ -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 @@ class CommandTestCase(unittest.TestCase):
         finally:
             debug.DEBUG = False
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(CommandTestCase)
-
 if __name__ == '__main__':
-    run_unittest(test_suite())
+    unittest.main()
index 8ab70efb161cbd87e0bd95291f2c78e3b2a19a16..cb8e7237abd9e126a63b3b8216a6de08749544f1 100644 (file)
@@ -8,7 +8,6 @@ from distutils.log import set_threshold
 from distutils.log import WARN
 
 from distutils.tests import support
-from test.support import run_unittest
 
 PYPIRC = """\
 [distutils]
@@ -134,8 +133,5 @@ class PyPIRCCommandTestCase(BasePyPIRCCommandTestCase):
         self.assertEqual(config, waited)
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(PyPIRCCommandTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index c79db68aae115d15c43aad422cb11e5221ace633..4f132ce3d185cce6cc7b49bbf8337857430060fd 100644 (file)
@@ -4,7 +4,7 @@ import os
 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 @@ class ConfigTestCase(support.LoggingSilencer,
         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()
index 700a22da045d454ee8a7936b1658cbad5d5ddb9d..59fb16bdec28cbd6415f986d3ab46dc76cce4a68 100644 (file)
@@ -5,7 +5,7 @@ import distutils.core
 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 @@ class CoreTestCase(support.EnvironGuard, unittest.TestCase):
         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()
index 0912ffd15c8ee9682b6df6b12fd0379c171cee0e..633d3041a1bee4c3cad063d8ea61548b6bd85239 100644 (file)
@@ -3,7 +3,6 @@ import unittest
 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 @@ class CygwinCCompilerTestCase(support.TempdirManager,
                        '[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()
index 0d52740a9edda390982ee2a6aee3a6f3ff438101..ef52900b91af370f4dca196be8b1f80c33c286cb 100644 (file)
@@ -5,7 +5,6 @@ import os
 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 @@ class DepUtilTestCase(support.TempdirManager, unittest.TestCase):
                                     missing='newer'))
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(DepUtilTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index ebd89f320dca89381176c82995b5057c5c86c178..bae9c3ed56c83046efe3cf976800d4aa60e675fd 100644 (file)
@@ -11,7 +11,7 @@ from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree,
 
 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 @@ class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
             dir_util.copy_tree(src, None)
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(DirUtilTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index 2ef70d987f36bb4fc0d11c87785b7c73de5087f8..8ab24516e7073a06f5b67823e9f014704fd1c75a 100644 (file)
@@ -12,7 +12,7 @@ from distutils.dist import Distribution, fix_help_options
 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 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
         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()
index 2b08930eafb10a525f05684cf061e995e30bc89a..f9cdef254165495766187aead0ffb0f41e53f410 100644 (file)
@@ -3,7 +3,6 @@ import unittest
 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 @@ class ExtensionTestCase(unittest.TestCase):
         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()
index 551151b0143661b6ef75600e35cadebbc3961a1c..76ef6e9743d381c6566872e5652b37af8182fbfd 100644 (file)
@@ -8,7 +8,6 @@ from distutils.file_util import move_file, copy_file
 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 @@ class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
                 self.assertEqual(f.read(), 'some content')
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(FileUtilTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index 98c97e49f80db5753389e41b5a257ab034d46866..216cf27f493e028d90a3894942a02ed75fdc6707 100644 (file)
@@ -9,7 +9,7 @@ from distutils.filelist import glob_to_re, translate_pattern, FileList
 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 @@ class FindAllTestCase(unittest.TestCase):
             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()
index c38f98b8b2c2949190c3ed9e1fb205b6f19983a6..c30414d5cb24fa2e6494181713260d9faa855f00 100644 (file)
@@ -5,7 +5,7 @@ import sys
 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 @@ class InstallTestCase(support.TempdirManager,
         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()
index 6191d2fa6eefab35e9b92e05d4f43f31c30fbda2..c5c04a36e124011754fff37e56660ea91296ef44 100644 (file)
@@ -4,7 +4,6 @@ import unittest
 
 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 @@ class InstallDataTestCase(support.TempdirManager,
         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()
index 1aa4d09cdef731cfa893fb24b3b1e66677918cd8..f8f513217fc6a97713a5855a21dce8039dc9ec06 100644 (file)
@@ -4,7 +4,6 @@ import unittest
 
 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 @@ class InstallHeadersTestCase(support.TempdirManager,
         # 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()
index f840d1a94665ed549877840480a18a5ef2114273..08bc9c842693765b4c3d34b36ce264c8c9bf1622 100644 (file)
@@ -8,7 +8,7 @@ from distutils.command.install_lib import install_lib
 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 @@ class InstallLibTestCase(support.TempdirManager,
                       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()
index 648db3b11da745615a6670293ad33eccbc0dc5ee..b4272d6f90faea67023195928edfb76e114f672a 100644 (file)
@@ -7,7 +7,6 @@ from distutils.command.install_scripts import install_scripts
 from distutils.core import Distribution
 
 from distutils.tests import support
-from test.support import run_unittest
 
 
 class InstallScriptsTestCase(support.TempdirManager,
@@ -75,8 +74,5 @@ class InstallScriptsTestCase(support.TempdirManager,
             self.assertIn(name, installed)
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(InstallScriptsTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index ec2ae028de8777421ed9c8b926ce8dfad0fbf65a..0f3250313fdeadae4a7e86282bc6378e84951530 100644 (file)
@@ -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 @@ class TestLog(unittest.TestCase):
                         '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()
index 6235405e31201b23a5319444fde8ef8c390b1698..60b99e25f8a02ce7cf36dbb4d15e5bbf1be91722 100644 (file)
@@ -5,7 +5,6 @@ import os
 
 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 @@ class msvc9compilerTestCase(support.TempdirManager,
         self.assertIsNone(got)
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(msvc9compilerTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index dd67c3eb6d519d076cdc86b945b83d99449cdab1..7b3a6bbe7fda9d7d227761dcb8b41836f60019d6 100644 (file)
@@ -5,7 +5,6 @@ import os
 
 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 @@ class msvccompilerTestCase(support.TempdirManager,
         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()
index 7805c6d3c9f7b9c3eea80fb9ab4f68a7ad7e6f7a..33f9443358ff271b86cf518de37463e78080a3fe 100644 (file)
@@ -5,7 +5,6 @@ import getpass
 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 @@ class RegisterTestCase(BasePyPIRCCommandTestCase):
         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()
index 46b3a13e470c4eacd3a948a7f828a277a4ea467a..58497fe087567275b5ef59dedc9a053a5df1b06f 100644 (file)
@@ -6,7 +6,7 @@ import warnings
 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 @@ class SDistTestCase(BasePyPIRCCommandTestCase):
         finally:
             archive.close()
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(SDistTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index a0a1145da5df8e0544e630b890e646a7181ac4a1..30bbe2a283ba20cebe09c67111858bce04282c17 100644 (file)
@@ -3,7 +3,7 @@ import os
 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 @@ class SpawnTestCase(support.TempdirManager,
         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()
index 6833d22af5fe2a62a82147015e5384a29671d6d2..363834fe8b3a347e7791c577d79ee4f40c2616a8 100644 (file)
@@ -10,7 +10,7 @@ import unittest
 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 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
         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()
index ebac3d52f9097c2114efa9559c3fc7e57aafcd79..fbf48515a1da70deba93b7c0563cba62bede44d3 100644 (file)
@@ -3,7 +3,6 @@ import os
 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 @@ class TextFileTestCase(support.TempdirManager, unittest.TestCase):
         finally:
             in_file.close()
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(TextFileTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index a3484d4f94cd9216d373757ed9492125dfbbc98b..6a6592527c7659853e9a78494d9029f7c1800ba5 100644 (file)
@@ -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 @@ class UnixCCompilerTestCase(unittest.TestCase):
         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()
index d67974148830609221277228dbb4f2d22f306a93..9aae88bed582da3679004d207bf580a31fef2699 100644 (file)
@@ -4,7 +4,6 @@ import unittest
 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 @@ class uploadTestCase(BasePyPIRCCommandTestCase):
                     self.clear_logs()
 
 
-def test_suite():
-    return unittest.TestLoader().loadTestsFromTestCase(uploadTestCase)
-
 if __name__ == "__main__":
-    run_unittest(test_suite())
+    unittest.main()
index f9c223f06ec68d825c8af37f08e859f2564eb681..1b002cb35be1d05900e8818e647c147d819dafcb 100644 (file)
@@ -3,7 +3,6 @@ import os
 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 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
         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()
index 1563e0227b60ddea0fb5246957cda350defe582d..f102f2953ff50f0867fe6a7f287ac502e82ec329 100644 (file)
@@ -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 @@ class VersionTestCase(unittest.TestCase):
                           '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()
index 28ae09dc2058dab6258c41b3f65a0034adf0c4ba..b0e9ab2cf59b59523db8956e573953e32bd171cf 100644 (file)
@@ -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()
index 28320fb5c0bfd129c8d6e8e27fb841e2e11a0a74..12d1472b975c784d86ce30b4ff1cd1fe9e1b7d50 100644 (file)
@@ -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 @@ from test.support import warnings_helper
 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 (file)
index 0000000..ed0d394
--- /dev/null
@@ -0,0 +1 @@
+:mod:`distutils` tests can now be run via :mod:`unittest`.