Skip to content

Commit 1fcda68

Browse files
committed
Add more elaborate test on MRO
1 parent f7d75ac commit 1fcda68

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

Lib/test/test_capi/test_type.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,29 @@ def test_freeze(self):
99
# test PyType_Freeze()
1010
type_freeze = _testcapi.type_freeze
1111

12+
# simple case, no inherante
1213
class MyType:
1314
pass
1415
MyType.attr = "mutable"
1516

1617
type_freeze(MyType)
1718
with self.assertRaises(TypeError):
19+
# the class is now immutable
1820
MyType.attr = "immutable"
1921

20-
# PyType_Freeze() requires base classes to be immutable
21-
class Mutable:
22-
"mutable base class"
23-
pass
24-
class MyType2(Mutable):
25-
pass
22+
# test MRO: PyType_Freeze() requires base classes to be immutable
23+
class A: pass
24+
class B: pass
25+
class C(B): pass
26+
class D(A, C): pass
27+
28+
self.assertEqual(D.mro(), [D, A, C, B, object])
2629
with self.assertRaises(TypeError):
27-
type_freeze(MyType2)
30+
type_freeze(D)
31+
32+
type_freeze(A)
33+
type_freeze(B)
34+
type_freeze(C)
35+
# all parent classes are now immutable, so D can be made immutable
36+
# as well
37+
type_freeze(D)

0 commit comments

Comments
 (0)