MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_slots_special2

Method test_slots_special2

Lib/test/test_descr.py:1363–1401  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1361
1362 @unittest.expectedFailure # TODO: RUSTPYTHON
1363 def test_slots_special2(self):
1364 # Testing __qualname__ and __classcell__ in __slots__
1365 class Meta(type):
1366 def __new__(cls, name, bases, namespace, attr):
1367 self.assertIn(attr, namespace)
1368 return super().__new__(cls, name, bases, namespace)
1369
1370 class C1:
1371 def __init__(self):
1372 self.b = 42
1373 class C2(C1, metaclass=Meta, attr="__classcell__"):
1374 __slots__ = ["__classcell__"]
1375 def __init__(self):
1376 super().__init__()
1377 self.assertIsInstance(C2.__dict__["__classcell__"],
1378 types.MemberDescriptorType)
1379 c = C2()
1380 self.assertEqual(c.b, 42)
1381 self.assertNotHasAttr(c, "__classcell__")
1382 c.__classcell__ = 42
1383 self.assertEqual(c.__classcell__, 42)
1384 with self.assertRaises(TypeError):
1385 class C3:
1386 __classcell__ = 42
1387 __slots__ = ["__classcell__"]
1388
1389 class Q1(metaclass=Meta, attr="__qualname__"):
1390 __slots__ = ["__qualname__"]
1391 self.assertEqual(Q1.__qualname__, C1.__qualname__[:-2] + "Q1")
1392 self.assertIsInstance(Q1.__dict__["__qualname__"],
1393 types.MemberDescriptorType)
1394 q = Q1()
1395 self.assertNotHasAttr(q, "__qualname__")
1396 q.__qualname__ = "q"
1397 self.assertEqual(q.__qualname__, "q")
1398 with self.assertRaises(TypeError):
1399 class Q2:
1400 __qualname__ = object()
1401 __slots__ = ["__qualname__"]
1402
1403 def test_slots_descriptor(self):
1404 # Issue2115: slot descriptors did not correctly check

Callers

nothing calls this directly

Calls 6

Q1Class · 0.85
assertIsInstanceMethod · 0.80
C2Class · 0.70
assertEqualMethod · 0.45
assertNotHasAttrMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected