From: Jeremy Hylton Date: Fri, 4 Apr 2003 20:00:04 +0000 (+0000) Subject: Add Tim's gc boom test to the test suite. X-Git-Tag: v2.3c1~1286 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dee38ac7ddea4268156948062aaa2e1cabc7e5aa;p=python Add Tim's gc boom test to the test suite. --- diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index 95cea290d9..f190fa4b0c 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -253,6 +253,24 @@ def test_trashcan(): v = {1: v, 2: Ouch()} gc.disable() +class C: + def __getattr__(self, attr): + del self.attr + raise AttributeError + +def test_boom(): + a = C() + b = C() + a.attr = b + b.attr = a + + gc.collect() + del a, b + # the collection will invoke the getattr and decref one of the + # object. so they are deallocated without being reported as + # part of a cycle. + expect(gc.collect(), 0, "boom") + def test_all(): gc.collect() # Delete 2nd generation garbage run_test("lists", test_list) @@ -271,6 +289,7 @@ def test_all(): run_test("__del__ (new class)", test_del_newclass) run_test("saveall", test_saveall) run_test("trashcan", test_trashcan) + run_test("boom", test_boom) def test(): if verbose: