From 21227fff6eba0a7b06c9e8c1c09c5250517e8514 Mon Sep 17 00:00:00 2001 From: Heewa Barfchin Date: Sat, 8 Nov 2014 14:40:51 -0500 Subject: [PATCH] Cleanup Subprocess when tearing down AsyncTestCase Since an ioloop is created and destroyed between a test's `setUp` and `tearDown`, and Subprocess holds on to an ioloop until `uninitialize`, this allows the next test case to use Subprocess correctly. --- tornado/testing.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tornado/testing.py b/tornado/testing.py index 4d85abe99..4511863b7 100644 --- a/tornado/testing.py +++ b/tornado/testing.py @@ -19,6 +19,7 @@ try: from tornado.simple_httpclient import SimpleAsyncHTTPClient from tornado.ioloop import IOLoop, TimeoutError from tornado import netutil + from tornado.process import Subprocess except ImportError: # These modules are not importable on app engine. Parts of this module # won't work, but e.g. LogTrapTestCase and main() will. @@ -28,6 +29,7 @@ except ImportError: IOLoop = None netutil = None SimpleAsyncHTTPClient = None + Subprocess = None from tornado.log import gen_log, app_log from tornado.stack_context import ExceptionStackContext from tornado.util import raise_exc_info, basestring_type @@ -214,6 +216,8 @@ class AsyncTestCase(unittest.TestCase): self.io_loop.make_current() def tearDown(self): + # Clean up Subprocess, so it can be used again with a new ioloop. + Subprocess.uninitialize() self.io_loop.clear_current() if (not IOLoop.initialized() or self.io_loop is not IOLoop.instance()): -- 2.47.2