don't gc_collect on CPython to guarantee a lack of ref cycles (thanks Antoine)

This commit is contained in:
Philip Jenvey 2012-11-14 14:37:24 -08:00
parent f9e49eaefc
commit b37ac8eaf6
1 changed files with 9 additions and 5 deletions

View File

@ -7,8 +7,8 @@ import pickle
import weakref import weakref
import errno import errno
from test.support import (TESTFN, unlink, run_unittest, captured_output, from test.support import (TESTFN, captured_output, check_impl_detail,
gc_collect, cpython_only) cpython_only, gc_collect, run_unittest, unlink)
# XXX This is not really enough, each *operation* should be tested! # XXX This is not really enough, each *operation* should be tested!
@ -493,6 +493,8 @@ class ExceptionTests(unittest.TestCase):
e.__context__ = None e.__context__ = None
obj = None obj = None
obj = wr() obj = wr()
# guarantee no ref cycles on CPython (don't gc_collect)
if check_impl_detail(cpython=False):
gc_collect() gc_collect()
self.assertTrue(obj is None, "%s" % obj) self.assertTrue(obj is None, "%s" % obj)
@ -510,6 +512,7 @@ class ExceptionTests(unittest.TestCase):
except MyException: except MyException:
pass pass
obj = None obj = None
if check_impl_detail(cpython=False):
gc_collect() gc_collect()
obj = wr() obj = wr()
self.assertTrue(obj is None, "%s" % obj) self.assertTrue(obj is None, "%s" % obj)
@ -525,6 +528,7 @@ class ExceptionTests(unittest.TestCase):
with Context(): with Context():
inner_raising_func() inner_raising_func()
obj = None obj = None
if check_impl_detail(cpython=False):
gc_collect() gc_collect()
obj = wr() obj = wr()
self.assertTrue(obj is None, "%s" % obj) self.assertTrue(obj is None, "%s" % obj)