]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Clean up some uncollectable garbage in the test suite.
authorBen Darnell <ben@bendarnell.com>
Wed, 6 Nov 2013 21:44:15 +0000 (16:44 -0500)
committerBen Darnell <ben@bendarnell.com>
Wed, 6 Nov 2013 21:44:15 +0000 (16:44 -0500)
tornado/test/stack_context_test.py

index 5f62852f6bffad98ff7d915fc2529411c6dc1d20..2919330521e0357e416bed607a769daa3b2fe5fb 100644 (file)
@@ -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):