[Python-checkins] python/dist/src/Lib/test test_gc.py,1.29,1.30
tim_one@users.sourceforge.net
tim_one@users.sourceforge.net
Tue, 08 Apr 2003 12:44:17 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv28869/Lib/test
Modified Files:
test_gc.py
Log Message:
New tests identical to boom and boom2, except using new-style classes.
These never failed in 2.3, and the tests confirm it. They still blow up
in the 2.2 branch, despite that all the gc-vs-__del__ fixes from 2.3
have been backported (and this is expected -- 2.2 needs more work than
2.3 needed).
Index: test_gc.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_gc.py,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** test_gc.py 8 Apr 2003 17:17:15 -0000 1.29
--- test_gc.py 8 Apr 2003 19:44:13 -0000 1.30
***************
*** 305,308 ****
--- 305,350 ----
expect(len(gc.garbage), garbagelen, "boom2")
+ # boom__new and boom2_new are exactly like boom and boom2, except use
+ # new-style classes.
+
+ class Boom_New(object):
+ def __getattr__(self, someattribute):
+ del self.attr
+ raise AttributeError
+
+ def test_boom_new():
+ a = Boom_New()
+ b = Boom_New()
+ a.attr = b
+ b.attr = a
+
+ gc.collect()
+ garbagelen = len(gc.garbage)
+ del a, b
+ expect(gc.collect(), 4, "boom_new")
+ expect(len(gc.garbage), garbagelen, "boom_new")
+
+ class Boom2_New(object):
+ def __init__(self):
+ self.x = 0
+
+ def __getattr__(self, someattribute):
+ self.x += 1
+ if self.x > 1:
+ del self.attr
+ raise AttributeError
+
+ def test_boom2_new():
+ a = Boom2_New()
+ b = Boom2_New()
+ a.attr = b
+ b.attr = a
+
+ gc.collect()
+ garbagelen = len(gc.garbage)
+ del a, b
+ expect(gc.collect(), 4, "boom2_new")
+ expect(len(gc.garbage), garbagelen, "boom2_new")
+
def test_get_referents():
alist = [1, 3, 5]
***************
*** 348,351 ****
--- 390,395 ----
run_test("boom", test_boom)
run_test("boom2", test_boom2)
+ run_test("boom_new", test_boom_new)
+ run_test("boom2_new", test_boom2_new)
run_test("get_referents", test_get_referents)