Skip to content

Commit 9121fe3

Browse files
Update test_weakref.py
1 parent b432655 commit 9121fe3

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

Lib/test/test_weakref.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,32 @@ def __pow__(self, o, m=None):
589589
gc.collect()
590590

591591
self.assertIsNone(ref(), "Leaked object in pow operation")
592+
593+
def test_proxy_unref_richcompare_refcount(self):
594+
class C:
595+
def __eq__(self, o):
596+
return NotImplemented
597+
598+
# create dead proxy
599+
o = C()
600+
dead = weakref.proxy(o)
601+
del o
602+
gc.collect()
603+
604+
# create live proxy
605+
obj = C()
606+
ref = weakref.ref(obj)
607+
proxy = weakref.proxy(obj)
608+
609+
try:
610+
proxy == dead
611+
except ReferenceError:
612+
pass
613+
614+
del proxy, obj, dead
615+
gc.collect()
616+
617+
self.assertIsNone(ref(), "Leaked object in richcompare operation")
592618

593619
def test_getweakrefcount(self):
594620
o = C()

0 commit comments

Comments
 (0)