diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-06-03 15:49:04 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-03 15:49:04 (GMT) |
commit | 49a7e347976c9b39149ac7505b11ad6e9e2bdeec (patch) | |
tree | 56469235e384349a7e0a7b2b3e9bd3d5de7cacc6 | |
parent | 0b9956e9162d8723c2a30ff316ecc25e54459fb1 (diff) | |
download | cpython-49a7e347976c9b39149ac7505b11ad6e9e2bdeec.zip cpython-49a7e347976c9b39149ac7505b11ad6e9e2bdeec.tar.gz cpython-49a7e347976c9b39149ac7505b11ad6e9e2bdeec.tar.bz2 |
bpo-37137: Fix test_asyncio: use TestCase.set_event_loop() (GH-13779)
Replace asyncio.set_event_loop() with TestCase.set_event_loop() of
test_asyncio.utils: this method calls TestCase.close_loop() which
waits until the executor completes, to avoid leaking dangling
threads.
Inherit from test_asyncio.utils.TestCase rather than
unittest.TestCase.
-rw-r--r-- | Lib/test/test_asyncio/test_tasks.py | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py index 74ce259..22a4907 100644 --- a/Lib/test/test_asyncio/test_tasks.py +++ b/Lib/test/test_asyncio/test_tasks.py @@ -2775,7 +2775,7 @@ class BaseTaskIntrospectionTests: self.assertEqual(asyncio.all_tasks(loop), set()) -class PyIntrospectionTests(unittest.TestCase, BaseTaskIntrospectionTests): +class PyIntrospectionTests(test_utils.TestCase, BaseTaskIntrospectionTests): _register_task = staticmethod(tasks._py_register_task) _unregister_task = staticmethod(tasks._py_unregister_task) _enter_task = staticmethod(tasks._py_enter_task) @@ -2784,7 +2784,7 @@ class PyIntrospectionTests(unittest.TestCase, BaseTaskIntrospectionTests): @unittest.skipUnless(hasattr(tasks, '_c_register_task'), 'requires the C _asyncio module') -class CIntrospectionTests(unittest.TestCase, BaseTaskIntrospectionTests): +class CIntrospectionTests(test_utils.TestCase, BaseTaskIntrospectionTests): if hasattr(tasks, '_c_register_task'): _register_task = staticmethod(tasks._c_register_task) _unregister_task = staticmethod(tasks._c_unregister_task) @@ -2799,12 +2799,7 @@ class BaseCurrentLoopTests: def setUp(self): super().setUp() self.loop = asyncio.new_event_loop() - asyncio.set_event_loop(self.loop) - - def tearDown(self): - self.loop.close() - asyncio.set_event_loop(None) - super().tearDown() + self.set_event_loop(self.loop) def new_task(self, coro): raise NotImplementedError @@ -2828,7 +2823,7 @@ class BaseCurrentLoopTests: self.assertIsNone(asyncio.current_task(loop=self.loop)) -class PyCurrentLoopTests(BaseCurrentLoopTests, unittest.TestCase): +class PyCurrentLoopTests(BaseCurrentLoopTests, test_utils.TestCase): def new_task(self, coro): return tasks._PyTask(coro, loop=self.loop) @@ -2836,7 +2831,7 @@ class PyCurrentLoopTests(BaseCurrentLoopTests, unittest.TestCase): @unittest.skipUnless(hasattr(tasks, '_CTask'), 'requires the C _asyncio module') -class CCurrentLoopTests(BaseCurrentLoopTests, unittest.TestCase): +class CCurrentLoopTests(BaseCurrentLoopTests, test_utils.TestCase): def new_task(self, coro): return getattr(tasks, '_CTask')(coro, loop=self.loop) @@ -3245,7 +3240,7 @@ class SleepTests(test_utils.TestCase): def setUp(self): super().setUp() self.loop = asyncio.new_event_loop() - asyncio.set_event_loop(None) + self.set_event_loop(self.loop) def tearDown(self): self.loop.close() @@ -3279,7 +3274,7 @@ class WaitTests(test_utils.TestCase): def setUp(self): super().setUp() self.loop = asyncio.new_event_loop() - asyncio.set_event_loop(None) + self.set_event_loop(self.loop) def tearDown(self): self.loop.close() @@ -3306,7 +3301,7 @@ class CompatibilityTests(test_utils.TestCase): def setUp(self): super().setUp() self.loop = asyncio.new_event_loop() - asyncio.set_event_loop(None) + self.set_event_loop(self.loop) def tearDown(self): self.loop.close() |