Skip to content

Commit 583c435

Browse files
committed
Add test for assigning __bases__.
1 parent 6c74cac commit 583c435

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

Lib/test/test_descr.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4113,6 +4113,32 @@ class E(D):
41134113
else:
41144114
self.fail("shouldn't be able to create inheritance cycles")
41154115

4116+
def test_assign_bases_many_subclasses(self):
4117+
class A:
4118+
x = 'hello'
4119+
def __call__(self):
4120+
return 123
4121+
def __getitem__(self, index):
4122+
return None
4123+
4124+
class X:
4125+
x = 'bye'
4126+
4127+
class B(A):
4128+
pass
4129+
4130+
subclasses = []
4131+
for i in range(1000):
4132+
sc = type(f'Sub{i}', (B,), {})
4133+
subclasses.append(sc)
4134+
4135+
self.assertEqual(subclasses[0]()(), 123)
4136+
self.assertEqual(subclasses[0]().x, 'hello')
4137+
B.__bases__ = (X,)
4138+
with self.assertRaises(TypeError):
4139+
subclasses[0]()()
4140+
self.assertEqual(subclasses[0]().x, 'bye')
4141+
41164142
def test_builtin_bases(self):
41174143
# Make sure all the builtin types can have their base queried without
41184144
# segfaulting. See issue #5787.

0 commit comments

Comments
 (0)