[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)