[Python-checkins] CVS: python/dist/src/Lib/test test_gc.py,1.4,1.5
Neil Schemenauer
python-dev@python.org
Fri, 22 Sep 2000 08:26:24 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory slayer.i.sourceforge.net:/tmp/cvs-serv22277/Lib/test
Modified Files:
test_gc.py
Log Message:
- Add test for new SAVEALL debugging flag
- Use exceptions rather than asserts for failing tests.
- Reorganize tests and produce some output if verbose option is set.
Index: test_gc.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_gc.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** test_gc.py 2000/09/15 22:32:29 1.4
--- test_gc.py 2000/09/22 15:26:20 1.5
***************
*** 1,4 ****
--- 1,19 ----
+ from test_support import verbose, TestFailed
import gc
+ def run_test(name, thunk):
+ if verbose:
+ print "testing %s..." % name,
+ try:
+ thunk()
+ except TestFailed:
+ if verbose:
+ print "failed (expected %s but got %s)" % (result,
+ test_result)
+ raise TestFailed, name
+ else:
+ if verbose:
+ print "ok"
+
def test_list():
l = []
***************
*** 6,10 ****
gc.collect()
del l
! assert gc.collect() == 1
def test_dict():
--- 21,26 ----
gc.collect()
del l
! if gc.collect() != 1:
! raise TestFailed
def test_dict():
***************
*** 13,17 ****
gc.collect()
del d
! assert gc.collect() == 1
def test_tuple():
--- 29,34 ----
gc.collect()
del d
! if gc.collect() != 1:
! raise TestFailed
def test_tuple():
***************
*** 23,27 ****
del t
del l
! assert gc.collect() == 2
def test_class():
--- 40,45 ----
del t
del l
! if gc.collect() != 2:
! raise TestFailed
def test_class():
***************
*** 31,35 ****
gc.collect()
del A
! assert gc.collect() > 0
def test_instance():
--- 49,54 ----
gc.collect()
del A
! if gc.collect() == 0:
! raise TestFailed
def test_instance():
***************
*** 40,44 ****
gc.collect()
del a
! assert gc.collect() > 0
def test_method():
--- 59,64 ----
gc.collect()
del a
! if gc.collect() == 0:
! raise TestFailed
def test_method():
***************
*** 50,54 ****
gc.collect()
del a
! assert gc.collect() > 0
def test_finalizer():
--- 70,75 ----
gc.collect()
del a
! if gc.collect() == 0:
! raise TestFailed
def test_finalizer():
***************
*** 65,73 ****
b.b = b
gc.collect()
- gc.garbage[:] = []
del a
del b
! assert gc.collect() > 0
! assert id(gc.garbage[0]) == id_a
def test_function():
--- 86,100 ----
b.b = b
gc.collect()
del a
del b
! if gc.collect() == 0:
! raise TestFailed
! for obj in gc.garbage:
! if id(obj) == id_a:
! del obj.a
! break
! else:
! raise TestFailed
! gc.garbage.remove(obj)
def test_function():
***************
*** 78,82 ****
gc.collect()
del d
! assert gc.collect() == 2
def test_del():
--- 105,131 ----
gc.collect()
del d
! if gc.collect() != 2:
! raise TestFailed
!
! def test_saveall():
! # Verify that cyclic garbage like lists show up in gc.garbage if the
! # SAVEALL option is enabled.
! debug = gc.get_debug()
! gc.set_debug(debug | gc.DEBUG_SAVEALL)
! l = []
! l.append(l)
! id_l = id(l)
! del l
! gc.collect()
! try:
! for obj in gc.garbage:
! if id(obj) == id_l:
! del obj[:]
! break
! else:
! raise TestFailed
! gc.garbage.remove(obj)
! finally:
! gc.set_debug(debug)
def test_del():
***************
*** 97,121 ****
def test_all():
!
enabled = gc.isenabled()
gc.disable()
! assert not gc.isenabled()
!
! test_list()
! test_dict()
! test_tuple()
! test_class()
! test_instance()
! test_method()
! test_finalizer()
! test_function()
! test_del()
!
! # test gc.enable() even if GC is disabled by default
! gc.enable()
! assert gc.isenabled()
! if not enabled:
! gc.disable()
! test_all()
--- 146,182 ----
def test_all():
! run_test("lists", test_list)
! run_test("dicts", test_dict)
! run_test("tuples", test_tuple)
! run_test("classes", test_class)
! run_test("instances", test_instance)
! run_test("methods", test_method)
! run_test("functions", test_function)
! run_test("finalizers", test_finalizer)
! run_test("__del__", test_del)
! run_test("saveall", test_saveall)
!
! def test():
! if verbose:
! print "disabling automatic collection"
enabled = gc.isenabled()
gc.disable()
! assert not gc.isenabled()
! debug = gc.get_debug()
! gc.set_debug(debug & ~gc.DEBUG_LEAK) # this test is supposed to leak
!
! try:
! test_all()
! finally:
! gc.set_debug(debug)
! # test gc.enable() even if GC is disabled by default
! if verbose:
! print "restoring automatic collection"
! # make sure to always test gc.enable()
! gc.enable()
! assert gc.isenabled()
! if not enabled:
! gc.disable()
! test()