]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-93839: Move Lib/unttest/test/ to Lib/test/test_unittest/ (#94043)
authorVictor Stinner <vstinner@python.org>
Tue, 21 Jun 2022 08:27:59 +0000 (10:27 +0200)
committerGitHub <noreply@github.com>
Tue, 21 Jun 2022 08:27:59 +0000 (10:27 +0200)
* Move Lib/unittest/test/ to Lib/test/test_unittest/
* Remove Lib/test/test_unittest.py
* Replace unittest.test with test.test_unittest
* Remove unittest.load_tests()
* Rewrite unittest __init__.py and __main__.py
* Update build system, CODEOWNERS, and wasm_assets.py

38 files changed:
.github/CODEOWNERS
Lib/test/test_unittest.py [deleted file]
Lib/test/test_unittest/__init__.py [new file with mode: 0644]
Lib/test/test_unittest/__main__.py [new file with mode: 0644]
Lib/test/test_unittest/_test_warnings.py [moved from Lib/unittest/test/_test_warnings.py with 100% similarity]
Lib/test/test_unittest/dummy.py [moved from Lib/unittest/test/dummy.py with 100% similarity]
Lib/test/test_unittest/support.py [moved from Lib/unittest/test/support.py with 100% similarity]
Lib/test/test_unittest/test_assertions.py [moved from Lib/unittest/test/test_assertions.py with 100% similarity]
Lib/test/test_unittest/test_async_case.py [moved from Lib/unittest/test/test_async_case.py with 100% similarity]
Lib/test/test_unittest/test_break.py [moved from Lib/unittest/test/test_break.py with 100% similarity]
Lib/test/test_unittest/test_case.py [moved from Lib/unittest/test/test_case.py with 99% similarity]
Lib/test/test_unittest/test_discovery.py [moved from Lib/unittest/test/test_discovery.py with 99% similarity]
Lib/test/test_unittest/test_functiontestcase.py [moved from Lib/unittest/test/test_functiontestcase.py with 99% similarity]
Lib/test/test_unittest/test_loader.py [moved from Lib/unittest/test/test_loader.py with 99% similarity]
Lib/test/test_unittest/test_program.py [moved from Lib/unittest/test/test_program.py with 96% similarity]
Lib/test/test_unittest/test_result.py [moved from Lib/unittest/test/test_result.py with 100% similarity]
Lib/test/test_unittest/test_runner.py [moved from Lib/unittest/test/test_runner.py with 99% similarity]
Lib/test/test_unittest/test_setups.py [moved from Lib/unittest/test/test_setups.py with 100% similarity]
Lib/test/test_unittest/test_skipping.py [moved from Lib/unittest/test/test_skipping.py with 99% similarity]
Lib/test/test_unittest/test_suite.py [moved from Lib/unittest/test/test_suite.py with 99% similarity]
Lib/test/test_unittest/testmock/__init__.py [moved from Lib/unittest/test/testmock/__init__.py with 86% similarity]
Lib/test/test_unittest/testmock/__main__.py [moved from Lib/unittest/test/testmock/__main__.py with 86% similarity]
Lib/test/test_unittest/testmock/support.py [moved from Lib/unittest/test/testmock/support.py with 100% similarity]
Lib/test/test_unittest/testmock/testasync.py [moved from Lib/unittest/test/testmock/testasync.py with 100% similarity]
Lib/test/test_unittest/testmock/testcallable.py [moved from Lib/unittest/test/testmock/testcallable.py with 98% similarity]
Lib/test/test_unittest/testmock/testhelpers.py [moved from Lib/unittest/test/testmock/testhelpers.py with 100% similarity]
Lib/test/test_unittest/testmock/testmagicmethods.py [moved from Lib/unittest/test/testmock/testmagicmethods.py with 100% similarity]
Lib/test/test_unittest/testmock/testmock.py [moved from Lib/unittest/test/testmock/testmock.py with 99% similarity]
Lib/test/test_unittest/testmock/testpatch.py [moved from Lib/unittest/test/testmock/testpatch.py with 98% similarity]
Lib/test/test_unittest/testmock/testsealable.py [moved from Lib/unittest/test/testmock/testsealable.py with 100% similarity]
Lib/test/test_unittest/testmock/testsentinel.py [moved from Lib/unittest/test/testmock/testsentinel.py with 100% similarity]
Lib/test/test_unittest/testmock/testwith.py [moved from Lib/unittest/test/testmock/testwith.py with 99% similarity]
Lib/unittest/__init__.py
Lib/unittest/test/__init__.py [deleted file]
Lib/unittest/test/__main__.py [deleted file]
Makefile.pre.in
PCbuild/lib.pyproj
Tools/wasm/wasm_assets.py

index 8f9eefaeaa2e84b1884abd209793d937eb5b2905..58023b63833eee763dafa90a3a8b9200f406665f 100644 (file)
@@ -97,7 +97,7 @@ Lib/ast.py                    @isidentical
 
 # Mock
 /Lib/unittest/mock.py         @cjw296
-/Lib/unittest/test/testmock/* @cjw296
+/Lib/test/test_unittest/testmock/* @cjw296
 
 # SQLite 3
 **/*sqlite*                   @berkerpeksag @erlend-aasland
diff --git a/Lib/test/test_unittest.py b/Lib/test/test_unittest.py
deleted file mode 100644 (file)
index 1079c7d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-import unittest.test
-
-from test import support
-
-
-def load_tests(*_):
-    # used by unittest
-    return unittest.test.suite()
-
-
-def tearDownModule():
-    support.reap_children()
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/Lib/test/test_unittest/__init__.py b/Lib/test/test_unittest/__init__.py
new file mode 100644 (file)
index 0000000..bc502ef
--- /dev/null
@@ -0,0 +1,6 @@
+import os.path
+from test.support import load_package_tests
+
+
+def load_tests(*args):
+    return load_package_tests(os.path.dirname(__file__), *args)
diff --git a/Lib/test/test_unittest/__main__.py b/Lib/test/test_unittest/__main__.py
new file mode 100644 (file)
index 0000000..40a23a2
--- /dev/null
@@ -0,0 +1,4 @@
+from . import load_tests
+import unittest
+
+unittest.main()
similarity index 99%
rename from Lib/unittest/test/test_case.py
rename to Lib/test/test_unittest/test_case.py
index 374a255255566f3d4dd9ae1c1d9d0a4a42813489..e000fe4f072407cba8e0835af507a3b7a0c6a0e4 100644 (file)
@@ -15,7 +15,7 @@ from test import support
 
 import unittest
 
-from unittest.test.support import (
+from test.test_unittest.support import (
     TestEquality, TestHashing, LoggingResult, LegacyLoggingResult,
     ResultWithNoStartTestRunStopTestRun
 )
similarity index 99%
rename from Lib/unittest/test/test_discovery.py
rename to Lib/test/test_unittest/test_discovery.py
index 3b58786ec16a10af2d19a663f2c141a9a59a23b2..946fa1258ea25ecf90f8cfad9d65956224765cf8 100644 (file)
@@ -10,7 +10,7 @@ import test.test_importlib.util
 
 import unittest
 import unittest.mock
-import unittest.test
+import test.test_unittest
 
 
 class TestableTestProgram(unittest.TestProgram):
@@ -789,7 +789,7 @@ class TestDiscovery(unittest.TestCase):
         loader = unittest.TestLoader()
 
         tests = [self]
-        expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
+        expectedPath = os.path.abspath(os.path.dirname(test.test_unittest.__file__))
 
         self.wasRun = False
         def _find_tests(start_dir, pattern):
@@ -797,7 +797,7 @@ class TestDiscovery(unittest.TestCase):
             self.assertEqual(start_dir, expectedPath)
             return tests
         loader._find_tests = _find_tests
-        suite = loader.discover('unittest.test')
+        suite = loader.discover('test.test_unittest')
         self.assertTrue(self.wasRun)
         self.assertEqual(suite._tests, tests)
 
similarity index 99%
rename from Lib/unittest/test/test_functiontestcase.py
rename to Lib/test/test_unittest/test_functiontestcase.py
index 4971729880d6d80dd08fe240b6c4a1d843151684..2ebed9564ad9cd870638f3dcabac81522b001d0d 100644 (file)
@@ -1,6 +1,6 @@
 import unittest
 
-from unittest.test.support import LoggingResult
+from test.test_unittest.support import LoggingResult
 
 
 class Test_FunctionTestCase(unittest.TestCase):
similarity index 99%
rename from Lib/unittest/test/test_loader.py
rename to Lib/test/test_unittest/test_loader.py
index de2268cda906882377602d23e121f90714b3649a..c06ebb658d28749ce9a22b5c682014cc2a225f36 100644 (file)
@@ -716,7 +716,7 @@ class Test_TestLoader(unittest.TestCase):
         # We're going to try to load this module as a side-effect, so it
         # better not be loaded before we try.
         #
-        module_name = 'unittest.test.dummy'
+        module_name = 'test.test_unittest.dummy'
         sys.modules.pop(module_name, None)
 
         loader = unittest.TestLoader()
@@ -844,7 +844,7 @@ class Test_TestLoader(unittest.TestCase):
         loader = unittest.TestLoader()
 
         suite = loader.loadTestsFromNames(
-            ['unittest.loader.sdasfasfasdf', 'unittest.test.dummy'])
+            ['unittest.loader.sdasfasfasdf', 'test.test_unittest.dummy'])
         error, test = self.check_deferred_error(loader, list(suite)[0])
         expected = "module 'unittest.loader' has no attribute 'sdasfasfasdf'"
         self.assertIn(
@@ -1141,7 +1141,7 @@ class Test_TestLoader(unittest.TestCase):
         # We're going to try to load this module as a side-effect, so it
         # better not be loaded before we try.
         #
-        module_name = 'unittest.test.dummy'
+        module_name = 'test.test_unittest.dummy'
         sys.modules.pop(module_name, None)
 
         loader = unittest.TestLoader()
similarity index 96%
rename from Lib/unittest/test/test_program.py
rename to Lib/test/test_unittest/test_program.py
index 26a8550af8fdd23ddd474d6c6a8d78a4ca9cffb0..169fc4ed9401f9c21433bef4c86c7a6c0b1fd893 100644 (file)
@@ -5,8 +5,8 @@ import sys
 import subprocess
 from test import support
 import unittest
-import unittest.test
-from unittest.test.test_result import BufferedWriter
+import test.test_unittest
+from test.test_unittest.test_result import BufferedWriter
 
 
 class Test_TestProgram(unittest.TestCase):
@@ -15,7 +15,7 @@ class Test_TestProgram(unittest.TestCase):
         loader = unittest.TestLoader()
 
         tests = [self]
-        expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
+        expectedPath = os.path.abspath(os.path.dirname(test.test_unittest.__file__))
 
         self.wasRun = False
         def _find_tests(start_dir, pattern):
@@ -23,7 +23,7 @@ class Test_TestProgram(unittest.TestCase):
             self.assertEqual(start_dir, expectedPath)
             return tests
         loader._find_tests = _find_tests
-        suite = loader.discover('unittest.test')
+        suite = loader.discover('test.test_unittest')
         self.assertTrue(self.wasRun)
         self.assertEqual(suite._tests, tests)
 
@@ -93,10 +93,10 @@ class Test_TestProgram(unittest.TestCase):
         sys.argv = ['faketest']
         runner = FakeRunner()
         program = unittest.TestProgram(testRunner=runner, exit=False,
-                                       defaultTest='unittest.test',
+                                       defaultTest='test.test_unittest',
                                        testLoader=self.FooBarLoader())
         sys.argv = old_argv
-        self.assertEqual(('unittest.test',), program.testNames)
+        self.assertEqual(('test.test_unittest',), program.testNames)
 
     def test_defaultTest_with_iterable(self):
         class FakeRunner(object):
@@ -109,10 +109,10 @@ class Test_TestProgram(unittest.TestCase):
         runner = FakeRunner()
         program = unittest.TestProgram(
             testRunner=runner, exit=False,
-            defaultTest=['unittest.test', 'unittest.test2'],
+            defaultTest=['test.test_unittest', 'test.test_unittest2'],
             testLoader=self.FooBarLoader())
         sys.argv = old_argv
-        self.assertEqual(['unittest.test', 'unittest.test2'],
+        self.assertEqual(['test.test_unittest', 'test.test_unittest2'],
                           program.testNames)
 
     def test_NonExit(self):
similarity index 99%
rename from Lib/unittest/test/test_runner.py
rename to Lib/test/test_unittest/test_runner.py
index d3488b40e82bde5d1ca977e3c8a5ece1b6cf7fdf..9e3a0a9ca08d65fd4c796164f3f651434f074005 100644 (file)
@@ -8,7 +8,7 @@ from test import support
 import unittest
 from unittest.case import _Outcome
 
-from unittest.test.support import (LoggingResult,
+from test.test_unittest.support import (LoggingResult,
                                    ResultWithNoStartTestRunStopTestRun)
 
 
similarity index 99%
rename from Lib/unittest/test/test_skipping.py
rename to Lib/test/test_unittest/test_skipping.py
index 64ceeae37ef0a757c5c98cd0cc89073ac8d885c4..f146dcac18ecc092a51a8cb4c97e36d7b87bf90e 100644 (file)
@@ -1,6 +1,6 @@
 import unittest
 
-from unittest.test.support import LoggingResult
+from test.test_unittest.support import LoggingResult
 
 
 class Test_TestSkipping(unittest.TestCase):
similarity index 99%
rename from Lib/unittest/test/test_suite.py
rename to Lib/test/test_unittest/test_suite.py
index 0551a16996723e8b29d08e6381e5fb8396b225c8..ca52ee9d9c011c5a502696ed8eb6af6772f33087 100644 (file)
@@ -3,7 +3,7 @@ import unittest
 import gc
 import sys
 import weakref
-from unittest.test.support import LoggingResult, TestEquality
+from test.test_unittest.support import LoggingResult, TestEquality
 
 
 ### Support code for Test_TestSuite
similarity index 86%
rename from Lib/unittest/test/testmock/__init__.py
rename to Lib/test/test_unittest/testmock/__init__.py
index 87d7ae994d5cd3909c25665a7a86d1de83dc38b7..6ee60b23765e07c3ed026eedf6b98c6a1981c1a4 100644 (file)
@@ -10,7 +10,7 @@ def load_tests(*args):
     suite = unittest.TestSuite()
     for fn in os.listdir(here):
         if fn.startswith("test") and fn.endswith(".py"):
-            modname = "unittest.test.testmock." + fn[:-3]
+            modname = "test.test_unittest.testmock." + fn[:-3]
             __import__(modname)
             module = sys.modules[modname]
             suite.addTest(loader.loadTestsFromModule(module))
similarity index 86%
rename from Lib/unittest/test/testmock/__main__.py
rename to Lib/test/test_unittest/testmock/__main__.py
index 45c633a4ee48b55e21ec02cd675792bda843046a..1e3068b0ddf391d3eaf00612b705276f2729b430 100644 (file)
@@ -6,7 +6,7 @@ def load_tests(loader, standard_tests, pattern):
     # top level directory cached on loader instance
     this_dir = os.path.dirname(__file__)
     pattern = pattern or "test*.py"
-    # We are inside unittest.test.testmock, so the top-level is three notches up
+    # We are inside test.test_unittest.testmock, so the top-level is three notches up
     top_level_dir = os.path.dirname(os.path.dirname(os.path.dirname(this_dir)))
     package_tests = loader.discover(start_dir=this_dir, pattern=pattern,
                                     top_level_dir=top_level_dir)
similarity index 98%
rename from Lib/unittest/test/testmock/testcallable.py
rename to Lib/test/test_unittest/testmock/testcallable.py
index 5eadc0070494009d768c6988cbcf137c4aa83117..ca88511f63959d02c43f87d8b0334d434cce6bea 100644 (file)
@@ -3,7 +3,7 @@
 # http://www.voidspace.org.uk/python/mock/
 
 import unittest
-from unittest.test.testmock.support import is_instance, X, SomeClass
+from test.test_unittest.testmock.support import is_instance, X, SomeClass
 
 from unittest.mock import (
     Mock, MagicMock, NonCallableMagicMock,
similarity index 99%
rename from Lib/unittest/test/testmock/testmock.py
rename to Lib/test/test_unittest/testmock/testmock.py
index c99098dc4ea86a50b418c6eb9462e1ffc01d13b2..8a92490137f9a721f76f8a8cda4ec5a2c7cb32cc 100644 (file)
@@ -5,7 +5,7 @@ import tempfile
 
 from test.support import ALWAYS_EQ
 import unittest
-from unittest.test.testmock.support import is_instance
+from test.test_unittest.testmock.support import is_instance
 from unittest import mock
 from unittest.mock import (
     call, DEFAULT, patch, sentinel,
similarity index 98%
rename from Lib/unittest/test/testmock/testpatch.py
rename to Lib/test/test_unittest/testmock/testpatch.py
index 8ab63a1317d3dfff905d9c0078b946e1c7398fae..93ec0ca4bef52414c4bfcf99257bf27cc759583e 100644 (file)
@@ -7,8 +7,8 @@ import sys
 from collections import OrderedDict
 
 import unittest
-from unittest.test.testmock import support
-from unittest.test.testmock.support import SomeClass, is_instance
+from test.test_unittest.testmock import support
+from test.test_unittest.testmock.support import SomeClass, is_instance
 
 from test.test_importlib.util import uncache
 from unittest.mock import (
@@ -669,7 +669,7 @@ class PatchTest(unittest.TestCase):
         # the new dictionary during function call
         original = support.target.copy()
 
-        @patch.dict('unittest.test.testmock.support.target', {'bar': 'BAR'})
+        @patch.dict('test.test_unittest.testmock.support.target', {'bar': 'BAR'})
         def test():
             self.assertEqual(support.target, {'foo': 'BAZ', 'bar': 'BAR'})
 
@@ -1614,7 +1614,7 @@ class PatchTest(unittest.TestCase):
 
 
     def test_patch_nested_autospec_repr(self):
-        with patch('unittest.test.testmock.support', autospec=True) as m:
+        with patch('test.test_unittest.testmock.support', autospec=True) as m:
             self.assertIn(" name='support.SomeClass.wibble()'",
                           repr(m.SomeClass.wibble()))
             self.assertIn(" name='support.SomeClass().wibble()'",
@@ -1882,7 +1882,7 @@ class PatchTest(unittest.TestCase):
 
         with patch.object(foo, '__module__', "testpatch2"):
             self.assertEqual(foo.__module__, "testpatch2")
-        self.assertEqual(foo.__module__, 'unittest.test.testmock.testpatch')
+        self.assertEqual(foo.__module__, 'test.test_unittest.testmock.testpatch')
 
         with patch.object(foo, '__annotations__', dict([('s', 1, )])):
             self.assertEqual(foo.__annotations__, dict([('s', 1, )]))
@@ -1917,16 +1917,16 @@ class PatchTest(unittest.TestCase):
         # This exercises the AttributeError branch of _dot_lookup.
 
         # make sure it's there
-        import unittest.test.testmock.support
+        import test.test_unittest.testmock.support
         # now make sure it's not:
         with patch.dict('sys.modules'):
-            del sys.modules['unittest.test.testmock.support']
-            del sys.modules['unittest.test.testmock']
-            del sys.modules['unittest.test']
+            del sys.modules['test.test_unittest.testmock.support']
+            del sys.modules['test.test_unittest.testmock']
+            del sys.modules['test.test_unittest']
             del sys.modules['unittest']
 
             # now make sure we can patch based on a dotted path:
-            @patch('unittest.test.testmock.support.X')
+            @patch('test.test_unittest.testmock.support.X')
             def test(mock):
                 pass
             test()
@@ -1943,7 +1943,7 @@ class PatchTest(unittest.TestCase):
 
 
     def test_cant_set_kwargs_when_passing_a_mock(self):
-        @patch('unittest.test.testmock.support.X', new=object(), x=1)
+        @patch('test.test_unittest.testmock.support.X', new=object(), x=1)
         def test(): pass
         with self.assertRaises(TypeError):
             test()
similarity index 99%
rename from Lib/unittest/test/testmock/testwith.py
rename to Lib/test/test_unittest/testmock/testwith.py
index c74d49a63c89286480794c81fe3cbd3613dc4feb..8dc8eb1137691fa0efef7aea721ad6a802514582 100644 (file)
@@ -1,7 +1,7 @@
 import unittest
 from warnings import catch_warnings
 
-from unittest.test.testmock.support import is_instance
+from test.test_unittest.testmock.support import is_instance
 from unittest.mock import MagicMock, Mock, patch, sentinel, mock_open, call
 
 
index 005d23f6d00ecbfc766d523f24121ebaf07a9271..b8de8c95d6158440c2d50eed71f61b6b8f9f2042 100644 (file)
@@ -73,16 +73,6 @@ from .loader import makeSuite, getTestCaseNames, findTestCases
 _TextTestResult = TextTestResult
 
 
-# There are no tests here, so don't try to run anything discovered from
-# introspecting the symbols (e.g. FunctionTestCase). Instead, all our
-# tests come from within unittest.test.
-def load_tests(loader, tests, pattern):
-    import os.path
-    # top level directory cached on loader instance
-    this_dir = os.path.dirname(__file__)
-    return loader.discover(start_dir=this_dir, pattern=pattern)
-
-
 # Lazy import of IsolatedAsyncioTestCase from .async_case
 # It imports asyncio, which is relatively heavy, but most tests
 # do not need it.
diff --git a/Lib/unittest/test/__init__.py b/Lib/unittest/test/__init__.py
deleted file mode 100644 (file)
index 143f4ab..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-import os
-import sys
-import unittest
-
-
-here = os.path.dirname(__file__)
-loader = unittest.defaultTestLoader
-
-def suite():
-    suite = unittest.TestSuite()
-    for fn in os.listdir(here):
-        if fn.startswith("test") and fn.endswith(".py"):
-            modname = "unittest.test." + fn[:-3]
-            try:
-                __import__(modname)
-            except unittest.SkipTest:
-                continue
-            module = sys.modules[modname]
-            suite.addTest(loader.loadTestsFromModule(module))
-    suite.addTest(loader.loadTestsFromName('unittest.test.testmock'))
-    return suite
-
-
-if __name__ == "__main__":
-    unittest.main(defaultTest="suite")
diff --git a/Lib/unittest/test/__main__.py b/Lib/unittest/test/__main__.py
deleted file mode 100644 (file)
index 44d0591..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-import os
-import unittest
-
-
-def load_tests(loader, standard_tests, pattern):
-    # top level directory cached on loader instance
-    this_dir = os.path.dirname(__file__)
-    pattern = pattern or "test_*.py"
-    # We are inside unittest.test, so the top-level is two notches up
-    top_level_dir = os.path.dirname(os.path.dirname(this_dir))
-    package_tests = loader.discover(start_dir=this_dir, pattern=pattern,
-                                    top_level_dir=top_level_dir)
-    standard_tests.addTests(package_tests)
-    return standard_tests
-
-
-if __name__ == '__main__':
-    unittest.main()
index 4b8a67f3cfa3a9062bac60bd8b242b6386ccb812..f61cc075860dad2f916f833825d177412212ee93 100644 (file)
@@ -1989,12 +1989,12 @@ TESTSUBDIRS=    distutils/tests \
                test/test_tools \
                test/test_warnings test/test_warnings/data \
                test/test_zoneinfo test/test_zoneinfo/data \
+               test/test_unittest test/test_unittest/testmock \
                test/tracedmodules \
                test/xmltestdata test/xmltestdata/c14n-20 \
                test/ziptestdata \
                tkinter/test tkinter/test/test_tkinter \
-               tkinter/test/test_ttk \
-               unittest/test unittest/test/testmock
+               tkinter/test/test_ttk
 
 TEST_MODULES=@TEST_MODULES@
 libinstall:    all $(srcdir)/Modules/xxmodule.c
index 692b083349da20bf397f92a5492b7f08366e6c82..f3f44d1d8ff3d46fb75e4d9503e592e8bc191f2e 100644 (file)
     <Compile Include="unittest\runner.py" />
     <Compile Include="unittest\signals.py" />
     <Compile Include="unittest\suite.py" />
-    <Compile Include="unittest\test\dummy.py" />
-    <Compile Include="unittest\test\support.py" />
-    <Compile Include="unittest\test\testmock\support.py" />
-    <Compile Include="unittest\test\testmock\testcallable.py" />
-    <Compile Include="unittest\test\testmock\testhelpers.py" />
-    <Compile Include="unittest\test\testmock\testmagicmethods.py" />
-    <Compile Include="unittest\test\testmock\testmock.py" />
-    <Compile Include="unittest\test\testmock\testpatch.py" />
-    <Compile Include="unittest\test\testmock\testsentinel.py" />
-    <Compile Include="unittest\test\testmock\testwith.py" />
-    <Compile Include="unittest\test\testmock\__init__.py" />
-    <Compile Include="unittest\test\testmock\__main__.py" />
-    <Compile Include="unittest\test\test_assertions.py" />
-    <Compile Include="unittest\test\test_break.py" />
-    <Compile Include="unittest\test\test_case.py" />
-    <Compile Include="unittest\test\test_discovery.py" />
-    <Compile Include="unittest\test\test_functiontestcase.py" />
-    <Compile Include="unittest\test\test_loader.py" />
-    <Compile Include="unittest\test\test_program.py" />
-    <Compile Include="unittest\test\test_result.py" />
-    <Compile Include="unittest\test\test_runner.py" />
-    <Compile Include="unittest\test\test_setups.py" />
-    <Compile Include="unittest\test\test_skipping.py" />
-    <Compile Include="unittest\test\test_suite.py" />
-    <Compile Include="unittest\test\_test_warnings.py" />
-    <Compile Include="unittest\test\__init__.py" />
-    <Compile Include="unittest\test\__main__.py" />
+    <Compile Include="test\test_unittest\dummy.py" />
+    <Compile Include="test\test_unittest\support.py" />
+    <Compile Include="test\test_unittest\testmock\support.py" />
+    <Compile Include="test\test_unittest\testmock\testcallable.py" />
+    <Compile Include="test\test_unittest\testmock\testhelpers.py" />
+    <Compile Include="test\test_unittest\testmock\testmagicmethods.py" />
+    <Compile Include="test\test_unittest\testmock\testmock.py" />
+    <Compile Include="test\test_unittest\testmock\testpatch.py" />
+    <Compile Include="test\test_unittest\testmock\testsentinel.py" />
+    <Compile Include="test\test_unittest\testmock\testwith.py" />
+    <Compile Include="test\test_unittest\testmock\__init__.py" />
+    <Compile Include="test\test_unittest\testmock\__main__.py" />
+    <Compile Include="test\test_unittest\test_assertions.py" />
+    <Compile Include="test\test_unittest\test_break.py" />
+    <Compile Include="test\test_unittest\test_case.py" />
+    <Compile Include="test\test_unittest\test_discovery.py" />
+    <Compile Include="test\test_unittest\test_functiontestcase.py" />
+    <Compile Include="test\test_unittest\test_loader.py" />
+    <Compile Include="test\test_unittest\test_program.py" />
+    <Compile Include="test\test_unittest\test_result.py" />
+    <Compile Include="test\test_unittest\test_runner.py" />
+    <Compile Include="test\test_unittest\test_setups.py" />
+    <Compile Include="test\test_unittest\test_skipping.py" />
+    <Compile Include="test\test_unittest\test_suite.py" />
+    <Compile Include="test\test_unittest\_test_warnings.py" />
+    <Compile Include="test\test_unittest\__init__.py" />
+    <Compile Include="test\test_unittest\__main__.py" />
     <Compile Include="unittest\util.py" />
     <Compile Include="unittest\__init__.py" />
     <Compile Include="unittest\__main__.py" />
     <Folder Include="test\test_json" />
     <Folder Include="test\test_peg_generator" />
     <Folder Include="test\test_tools" />
+    <Folder Include="test\test_unittest" />
+    <Folder Include="test\test_unittest\testmock" />
     <Folder Include="test\test_warnings" />
     <Folder Include="test\test_warnings\data" />
     <Folder Include="test\tracedmodules" />
     <Folder Include="tkinter\test\test_ttk" />
     <Folder Include="turtledemo" />
     <Folder Include="unittest" />
-    <Folder Include="unittest\test" />
-    <Folder Include="unittest\test\testmock" />
     <Folder Include="urllib" />
     <Folder Include="venv" />
     <Folder Include="wsgiref" />
index d0a0570840be68292d366bfa62e58fd7cfca3c8e..67afde60f0942dbf162555f05103932050e04fc5 100755 (executable)
@@ -112,7 +112,6 @@ OMIT_MODULE_FILES = {
 # regression test sub directories
 OMIT_SUBDIRS = (
     "tkinter/test/",
-    "unittest/test/",
 )
 
 def get_builddir(args: argparse.Namespace) -> pathlib.Path: