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.
This commit is contained in:
parent
0b9956e916
commit
49a7e34797
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue