Skip to content

Commit c735d54

Browse files
authored
pythongh-93839: Move Lib/unttest/test/ to Lib/test/test_unittest/ (python#94043)
* 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
1 parent d82e0bf commit c735d54

38 files changed

+77
-137
lines changed

.github/CODEOWNERS

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Lib/ast.py @isidentical
9797

9898
# Mock
9999
/Lib/unittest/mock.py @cjw296
100-
/Lib/unittest/test/testmock/* @cjw296
100+
/Lib/test/test_unittest/testmock/* @cjw296
101101

102102
# SQLite 3
103103
**/*sqlite* @berkerpeksag @erlend-aasland

Lib/test/test_unittest.py

-16
This file was deleted.

Lib/test/test_unittest/__init__.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import os.path
2+
from test.support import load_package_tests
3+
4+
5+
def load_tests(*args):
6+
return load_package_tests(os.path.dirname(__file__), *args)

Lib/test/test_unittest/__main__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from . import load_tests
2+
import unittest
3+
4+
unittest.main()
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Lib/unittest/test/test_case.py Lib/test/test_unittest/test_case.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import unittest
1717

18-
from unittest.test.support import (
18+
from test.test_unittest.support import (
1919
TestEquality, TestHashing, LoggingResult, LegacyLoggingResult,
2020
ResultWithNoStartTestRunStopTestRun
2121
)

Lib/unittest/test/test_discovery.py Lib/test/test_unittest/test_discovery.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import unittest
1212
import unittest.mock
13-
import unittest.test
13+
import test.test_unittest
1414

1515

1616
class TestableTestProgram(unittest.TestProgram):
@@ -789,15 +789,15 @@ def test_discovery_from_dotted_path(self):
789789
loader = unittest.TestLoader()
790790

791791
tests = [self]
792-
expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
792+
expectedPath = os.path.abspath(os.path.dirname(test.test_unittest.__file__))
793793

794794
self.wasRun = False
795795
def _find_tests(start_dir, pattern):
796796
self.wasRun = True
797797
self.assertEqual(start_dir, expectedPath)
798798
return tests
799799
loader._find_tests = _find_tests
800-
suite = loader.discover('unittest.test')
800+
suite = loader.discover('test.test_unittest')
801801
self.assertTrue(self.wasRun)
802802
self.assertEqual(suite._tests, tests)
803803

Lib/unittest/test/test_functiontestcase.py Lib/test/test_unittest/test_functiontestcase.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import unittest
22

3-
from unittest.test.support import LoggingResult
3+
from test.test_unittest.support import LoggingResult
44

55

66
class Test_FunctionTestCase(unittest.TestCase):

Lib/unittest/test/test_loader.py Lib/test/test_unittest/test_loader.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ def test_loadTestsFromName__module_not_loaded(self):
716716
# We're going to try to load this module as a side-effect, so it
717717
# better not be loaded before we try.
718718
#
719-
module_name = 'unittest.test.dummy'
719+
module_name = 'test.test_unittest.dummy'
720720
sys.modules.pop(module_name, None)
721721

722722
loader = unittest.TestLoader()
@@ -844,7 +844,7 @@ def test_loadTestsFromNames__unknown_attr_name(self):
844844
loader = unittest.TestLoader()
845845

846846
suite = loader.loadTestsFromNames(
847-
['unittest.loader.sdasfasfasdf', 'unittest.test.dummy'])
847+
['unittest.loader.sdasfasfasdf', 'test.test_unittest.dummy'])
848848
error, test = self.check_deferred_error(loader, list(suite)[0])
849849
expected = "module 'unittest.loader' has no attribute 'sdasfasfasdf'"
850850
self.assertIn(
@@ -1141,7 +1141,7 @@ def test_loadTestsFromNames__module_not_loaded(self):
11411141
# We're going to try to load this module as a side-effect, so it
11421142
# better not be loaded before we try.
11431143
#
1144-
module_name = 'unittest.test.dummy'
1144+
module_name = 'test.test_unittest.dummy'
11451145
sys.modules.pop(module_name, None)
11461146

11471147
loader = unittest.TestLoader()

Lib/unittest/test/test_program.py Lib/test/test_unittest/test_program.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import subprocess
66
from test import support
77
import unittest
8-
import unittest.test
9-
from unittest.test.test_result import BufferedWriter
8+
import test.test_unittest
9+
from test.test_unittest.test_result import BufferedWriter
1010

1111

1212
class Test_TestProgram(unittest.TestCase):
@@ -15,15 +15,15 @@ def test_discovery_from_dotted_path(self):
1515
loader = unittest.TestLoader()
1616

1717
tests = [self]
18-
expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
18+
expectedPath = os.path.abspath(os.path.dirname(test.test_unittest.__file__))
1919

2020
self.wasRun = False
2121
def _find_tests(start_dir, pattern):
2222
self.wasRun = True
2323
self.assertEqual(start_dir, expectedPath)
2424
return tests
2525
loader._find_tests = _find_tests
26-
suite = loader.discover('unittest.test')
26+
suite = loader.discover('test.test_unittest')
2727
self.assertTrue(self.wasRun)
2828
self.assertEqual(suite._tests, tests)
2929

@@ -93,10 +93,10 @@ def run(self, test):
9393
sys.argv = ['faketest']
9494
runner = FakeRunner()
9595
program = unittest.TestProgram(testRunner=runner, exit=False,
96-
defaultTest='unittest.test',
96+
defaultTest='test.test_unittest',
9797
testLoader=self.FooBarLoader())
9898
sys.argv = old_argv
99-
self.assertEqual(('unittest.test',), program.testNames)
99+
self.assertEqual(('test.test_unittest',), program.testNames)
100100

101101
def test_defaultTest_with_iterable(self):
102102
class FakeRunner(object):
@@ -109,10 +109,10 @@ def run(self, test):
109109
runner = FakeRunner()
110110
program = unittest.TestProgram(
111111
testRunner=runner, exit=False,
112-
defaultTest=['unittest.test', 'unittest.test2'],
112+
defaultTest=['test.test_unittest', 'test.test_unittest2'],
113113
testLoader=self.FooBarLoader())
114114
sys.argv = old_argv
115-
self.assertEqual(['unittest.test', 'unittest.test2'],
115+
self.assertEqual(['test.test_unittest', 'test.test_unittest2'],
116116
program.testNames)
117117

118118
def test_NonExit(self):
File renamed without changes.

Lib/unittest/test/test_runner.py Lib/test/test_unittest/test_runner.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import unittest
99
from unittest.case import _Outcome
1010

11-
from unittest.test.support import (LoggingResult,
11+
from test.test_unittest.support import (LoggingResult,
1212
ResultWithNoStartTestRunStopTestRun)
1313

1414

File renamed without changes.

Lib/unittest/test/test_skipping.py Lib/test/test_unittest/test_skipping.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import unittest
22

3-
from unittest.test.support import LoggingResult
3+
from test.test_unittest.support import LoggingResult
44

55

66
class Test_TestSkipping(unittest.TestCase):

Lib/unittest/test/test_suite.py Lib/test/test_unittest/test_suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import gc
44
import sys
55
import weakref
6-
from unittest.test.support import LoggingResult, TestEquality
6+
from test.test_unittest.support import LoggingResult, TestEquality
77

88

99
### Support code for Test_TestSuite

Lib/unittest/test/testmock/__init__.py Lib/test/test_unittest/testmock/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def load_tests(*args):
1010
suite = unittest.TestSuite()
1111
for fn in os.listdir(here):
1212
if fn.startswith("test") and fn.endswith(".py"):
13-
modname = "unittest.test.testmock." + fn[:-3]
13+
modname = "test.test_unittest.testmock." + fn[:-3]
1414
__import__(modname)
1515
module = sys.modules[modname]
1616
suite.addTest(loader.loadTestsFromModule(module))

Lib/unittest/test/testmock/__main__.py Lib/test/test_unittest/testmock/__main__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def load_tests(loader, standard_tests, pattern):
66
# top level directory cached on loader instance
77
this_dir = os.path.dirname(__file__)
88
pattern = pattern or "test*.py"
9-
# We are inside unittest.test.testmock, so the top-level is three notches up
9+
# We are inside test.test_unittest.testmock, so the top-level is three notches up
1010
top_level_dir = os.path.dirname(os.path.dirname(os.path.dirname(this_dir)))
1111
package_tests = loader.discover(start_dir=this_dir, pattern=pattern,
1212
top_level_dir=top_level_dir)

Lib/unittest/test/testmock/testcallable.py Lib/test/test_unittest/testmock/testcallable.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# http://www.voidspace.org.uk/python/mock/
44

55
import unittest
6-
from unittest.test.testmock.support import is_instance, X, SomeClass
6+
from test.test_unittest.testmock.support import is_instance, X, SomeClass
77

88
from unittest.mock import (
99
Mock, MagicMock, NonCallableMagicMock,

Lib/unittest/test/testmock/testmock.py Lib/test/test_unittest/testmock/testmock.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from test.support import ALWAYS_EQ
77
import unittest
8-
from unittest.test.testmock.support import is_instance
8+
from test.test_unittest.testmock.support import is_instance
99
from unittest import mock
1010
from unittest.mock import (
1111
call, DEFAULT, patch, sentinel,

Lib/unittest/test/testmock/testpatch.py Lib/test/test_unittest/testmock/testpatch.py

+11-11
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
from collections import OrderedDict
88

99
import unittest
10-
from unittest.test.testmock import support
11-
from unittest.test.testmock.support import SomeClass, is_instance
10+
from test.test_unittest.testmock import support
11+
from test.test_unittest.testmock.support import SomeClass, is_instance
1212

1313
from test.test_importlib.util import uncache
1414
from unittest.mock import (
@@ -669,7 +669,7 @@ def test_patch_dict_decorator_resolution(self):
669669
# the new dictionary during function call
670670
original = support.target.copy()
671671

672-
@patch.dict('unittest.test.testmock.support.target', {'bar': 'BAR'})
672+
@patch.dict('test.test_unittest.testmock.support.target', {'bar': 'BAR'})
673673
def test():
674674
self.assertEqual(support.target, {'foo': 'BAZ', 'bar': 'BAR'})
675675

@@ -1614,7 +1614,7 @@ def test_patch_with_spec_mock_repr(self):
16141614

16151615

16161616
def test_patch_nested_autospec_repr(self):
1617-
with patch('unittest.test.testmock.support', autospec=True) as m:
1617+
with patch('test.test_unittest.testmock.support', autospec=True) as m:
16181618
self.assertIn(" name='support.SomeClass.wibble()'",
16191619
repr(m.SomeClass.wibble()))
16201620
self.assertIn(" name='support.SomeClass().wibble()'",
@@ -1882,7 +1882,7 @@ def foo(x=0):
18821882

18831883
with patch.object(foo, '__module__', "testpatch2"):
18841884
self.assertEqual(foo.__module__, "testpatch2")
1885-
self.assertEqual(foo.__module__, 'unittest.test.testmock.testpatch')
1885+
self.assertEqual(foo.__module__, 'test.test_unittest.testmock.testpatch')
18861886

18871887
with patch.object(foo, '__annotations__', dict([('s', 1, )])):
18881888
self.assertEqual(foo.__annotations__, dict([('s', 1, )]))
@@ -1917,16 +1917,16 @@ def test_dotted_but_module_not_loaded(self):
19171917
# This exercises the AttributeError branch of _dot_lookup.
19181918

19191919
# make sure it's there
1920-
import unittest.test.testmock.support
1920+
import test.test_unittest.testmock.support
19211921
# now make sure it's not:
19221922
with patch.dict('sys.modules'):
1923-
del sys.modules['unittest.test.testmock.support']
1924-
del sys.modules['unittest.test.testmock']
1925-
del sys.modules['unittest.test']
1923+
del sys.modules['test.test_unittest.testmock.support']
1924+
del sys.modules['test.test_unittest.testmock']
1925+
del sys.modules['test.test_unittest']
19261926
del sys.modules['unittest']
19271927

19281928
# now make sure we can patch based on a dotted path:
1929-
@patch('unittest.test.testmock.support.X')
1929+
@patch('test.test_unittest.testmock.support.X')
19301930
def test(mock):
19311931
pass
19321932
test()
@@ -1943,7 +1943,7 @@ class Foo:
19431943

19441944

19451945
def test_cant_set_kwargs_when_passing_a_mock(self):
1946-
@patch('unittest.test.testmock.support.X', new=object(), x=1)
1946+
@patch('test.test_unittest.testmock.support.X', new=object(), x=1)
19471947
def test(): pass
19481948
with self.assertRaises(TypeError):
19491949
test()

Lib/unittest/test/testmock/testwith.py Lib/test/test_unittest/testmock/testwith.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import unittest
22
from warnings import catch_warnings
33

4-
from unittest.test.testmock.support import is_instance
4+
from test.test_unittest.testmock.support import is_instance
55
from unittest.mock import MagicMock, Mock, patch, sentinel, mock_open, call
66

77

Lib/unittest/__init__.py

-10
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,6 @@ def testMultiply(self):
7373
_TextTestResult = TextTestResult
7474

7575

76-
# There are no tests here, so don't try to run anything discovered from
77-
# introspecting the symbols (e.g. FunctionTestCase). Instead, all our
78-
# tests come from within unittest.test.
79-
def load_tests(loader, tests, pattern):
80-
import os.path
81-
# top level directory cached on loader instance
82-
this_dir = os.path.dirname(__file__)
83-
return loader.discover(start_dir=this_dir, pattern=pattern)
84-
85-
8676
# Lazy import of IsolatedAsyncioTestCase from .async_case
8777
# It imports asyncio, which is relatively heavy, but most tests
8878
# do not need it.

Lib/unittest/test/__init__.py

-25
This file was deleted.

Lib/unittest/test/__main__.py

-18
This file was deleted.

Makefile.pre.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -1989,12 +1989,12 @@ TESTSUBDIRS= distutils/tests \
19891989
test/test_tools \
19901990
test/test_warnings test/test_warnings/data \
19911991
test/test_zoneinfo test/test_zoneinfo/data \
1992+
test/test_unittest test/test_unittest/testmock \
19921993
test/tracedmodules \
19931994
test/xmltestdata test/xmltestdata/c14n-20 \
19941995
test/ziptestdata \
19951996
tkinter/test tkinter/test/test_tkinter \
1996-
tkinter/test/test_ttk \
1997-
unittest/test unittest/test/testmock
1997+
tkinter/test/test_ttk
19981998

19991999
TEST_MODULES=@TEST_MODULES@
20002000
libinstall: all $(srcdir)/Modules/xxmodule.c

0 commit comments

Comments
 (0)