Skip to content

Commit 31f6607

Browse files
committed
Separate leakage test and mark it as CPython-only
1 parent b77ea9f commit 31f6607

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

Lib/test/test_typing.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8135,7 +8135,7 @@ class Group(NamedTuple):
81358135
self.assertIs(type(a), Group)
81368136
self.assertEqual(a, (1, [2]))
81378137

8138-
def test_classcell_access(self):
8138+
def test_super_works_in_namedtuples(self):
81398139
# See #85795: __class__ not set defining 'X' as <class '__main__.X'>
81408140
class Pointer(NamedTuple):
81418141
address: int
@@ -8155,9 +8155,16 @@ def count(self, item):
81558155
self.assertEqual(ptr.count(0), -1)
81568156
self.assertEqual(ptr.count(0xdeadbeef), 1)
81578157

8158+
@cpython_only
8159+
def test_classcell_not_leaked(self):
8160+
# __classcell__ should never be leaked into end classes
8161+
8162+
class Spam(NamedTuple):
8163+
lambda: super()
8164+
lambda: __class__
8165+
81588166
with self.assertRaises(AttributeError):
8159-
# __classcell__ should never be leaked into end classes
8160-
Pointer.__classcell__
8167+
Spam.__classcell__
81618168

81628169
def test_namedtuple_keyword_usage(self):
81638170
with self.assertWarnsRegex(

0 commit comments

Comments
 (0)