From: Benjamin Peterson Date: Sat, 11 May 2013 21:10:52 +0000 (-0500) Subject: simplify #17947 test with weakrefs X-Git-Tag: v3.4.0a1~749 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2943cdb5eb7f342a4cdaec59893825de172eedc6;p=thirdparty%2FPython%2Fcpython.git simplify #17947 test with weakrefs --- diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py index 1c06224cba65..70065f93490d 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -1,5 +1,7 @@ import gc import unittest +import weakref + from test.support import check_syntax_error, cpython_only, run_unittest @@ -740,16 +742,7 @@ class ScopeTests(unittest.TestCase): # (though it will be cleared when the frame is collected). # Without the lambda, setting self to None is enough to break # the cycle. - logs = [] - class Canary: - def __del__(self): - logs.append('canary') - class Base: - def dig(self): - pass - class Tester(Base): - def __init__(self): - self.canary = Canary() + class Tester: def dig(self): if 0: lambda: self @@ -757,14 +750,12 @@ class ScopeTests(unittest.TestCase): 1/0 except Exception as exc: self.exc = exc - super().dig() self = None # Break the cycle tester = Tester() tester.dig() + ref = weakref.ref(tester) del tester - logs.append('collect') - gc.collect() - self.assertEqual(logs, ['canary', 'collect']) + self.assertIsNone(ref()) def test_main():