Skip to content

Commit e17be43

Browse files
committed
gh-143959: Make _types optional for test_types
1 parent a3b9317 commit e17be43

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

Lib/test/test_types.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
import _datetime
2626
except ModuleNotFoundError:
2727
_datetime = None
28+
try:
29+
import _types
30+
except ModuleNotFoundError:
31+
_types = None
2832

2933
c_types = import_fresh_module('types', fresh=['_types'])
3034
py_types = import_fresh_module('types', blocked=['_types'])
@@ -43,15 +47,10 @@ def clear_typing_caches():
4347

4448
class TypesTests(unittest.TestCase):
4549

46-
def test_names(self):
50+
def check_types_names(self, module_types, *, c_extension=False):
4751
c_only_names = {'CapsuleType'}
4852
ignored = {'new_class', 'resolve_bases', 'prepare_class',
4953
'get_original_bases', 'DynamicClassAttribute', 'coroutine'}
50-
51-
for name in c_types.__all__:
52-
if name not in c_only_names | ignored:
53-
self.assertIs(getattr(c_types, name), getattr(py_types, name))
54-
5554
all_names = ignored | {
5655
'AsyncGeneratorType', 'BuiltinFunctionType', 'BuiltinMethodType',
5756
'CapsuleType', 'CellType', 'ClassMethodDescriptorType', 'CodeType',
@@ -63,8 +62,24 @@ def test_names(self):
6362
'ModuleType', 'NoneType', 'NotImplementedType', 'SimpleNamespace',
6463
'TracebackType', 'UnionType', 'WrapperDescriptorType',
6564
}
66-
self.assertEqual(all_names, set(c_types.__all__))
67-
self.assertEqual(all_names - c_only_names, set(py_types.__all__))
65+
expected = all_names if c_extension else all_names - c_only_names
66+
self.assertEqual(expected, set(module_types.__all__))
67+
68+
@unittest.skipUnless(_types, "requires C _types module")
69+
def test_c_types_names(self):
70+
self.check_types_names(c_types, c_extension=True)
71+
72+
def test_py_types_names(self):
73+
self.check_types_names(py_types, c_extension=False)
74+
75+
@unittest.skipUnless(_types, "requires C _types module")
76+
def test_types_names_consistency(self):
77+
c_only_names = {'CapsuleType'}
78+
ignored = {'new_class', 'resolve_bases', 'prepare_class',
79+
'get_original_bases', 'DynamicClassAttribute', 'coroutine'}
80+
for name in c_types.__all__:
81+
if name not in c_only_names | ignored:
82+
self.assertIs(getattr(c_types, name), getattr(py_types, name))
6883

6984
def test_truth_values(self):
7085
if None: self.fail('None is true instead of false')

0 commit comments

Comments
 (0)