Clean up some uncollectable garbage in the test suite.
This commit is contained in:
parent
6f56d1a410
commit
372ebb561e
|
@ -220,12 +220,13 @@ class StackContextTest(AsyncTestCase):
|
|||
@gen.engine
|
||||
def f():
|
||||
try:
|
||||
self.callback = yield gen.Callback('a')
|
||||
with StackContext(functools.partial(self.context, 'c1')):
|
||||
# This yield is a problem: the generator will be suspended
|
||||
# and the StackContext's __exit__ is not called yet, so
|
||||
# the context will be left on _state.contexts for anything
|
||||
# that runs before the yield resolves.
|
||||
yield gen.Task(self.io_loop.add_callback)
|
||||
yield gen.Wait('a')
|
||||
except StackContextInconsistentError:
|
||||
# In python <= 3.3, this suspended generator is never garbage
|
||||
# collected, so it remains suspended in the 'yield' forever.
|
||||
|
@ -238,6 +239,11 @@ class StackContextTest(AsyncTestCase):
|
|||
with self.assertRaises(StackContextInconsistentError):
|
||||
f()
|
||||
self.wait()
|
||||
# Cleanup: to avoid GC warnings (which for some reason only seem
|
||||
# to show up on py33-asyncio), invoke the callback (which will do
|
||||
# nothing since the gen.Runner is already finished) and delete it.
|
||||
self.callback()
|
||||
del self.callback
|
||||
|
||||
@gen_test
|
||||
def test_yield_outside_with(self):
|
||||
|
|
Loading…
Reference in New Issue