mirror of
https://github.com/python/cpython.git
synced 2025-07-29 06:05:00 +00:00
bpo-47038: Rewrite missed asyncio.wait_for test to use IsolatedAnsyncioTestCase (GH-31946) (#31948)
(cherry picked from commit 3dd9bfac04
)
Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
This commit is contained in:
parent
4186dd662c
commit
36f62c5575
2 changed files with 24 additions and 26 deletions
|
@ -2292,32 +2292,6 @@ class BaseTaskTests:
|
||||||
'test_task_source_traceback'))
|
'test_task_source_traceback'))
|
||||||
self.loop.run_until_complete(task)
|
self.loop.run_until_complete(task)
|
||||||
|
|
||||||
def _test_cancel_wait_for(self, timeout):
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
self.addCleanup(loop.close)
|
|
||||||
|
|
||||||
async def blocking_coroutine():
|
|
||||||
fut = self.new_future(loop)
|
|
||||||
# Block: fut result is never set
|
|
||||||
await fut
|
|
||||||
|
|
||||||
task = loop.create_task(blocking_coroutine())
|
|
||||||
|
|
||||||
wait = loop.create_task(asyncio.wait_for(task, timeout))
|
|
||||||
loop.call_soon(wait.cancel)
|
|
||||||
|
|
||||||
self.assertRaises(asyncio.CancelledError,
|
|
||||||
loop.run_until_complete, wait)
|
|
||||||
|
|
||||||
# Python issue #23219: cancelling the wait must also cancel the task
|
|
||||||
self.assertTrue(task.cancelled())
|
|
||||||
|
|
||||||
def test_cancel_blocking_wait_for(self):
|
|
||||||
self._test_cancel_wait_for(None)
|
|
||||||
|
|
||||||
def test_cancel_wait_for(self):
|
|
||||||
self._test_cancel_wait_for(60.0)
|
|
||||||
|
|
||||||
def test_cancel_gather_1(self):
|
def test_cancel_gather_1(self):
|
||||||
"""Ensure that a gathering future refuses to be cancelled once all
|
"""Ensure that a gathering future refuses to be cancelled once all
|
||||||
children are done"""
|
children are done"""
|
||||||
|
|
|
@ -264,6 +264,30 @@ class AsyncioWaitForTest(unittest.IsolatedAsyncioTestCase):
|
||||||
|
|
||||||
self.assertEqual(await inner_task, 42)
|
self.assertEqual(await inner_task, 42)
|
||||||
|
|
||||||
|
async def _test_cancel_wait_for(self, timeout):
|
||||||
|
loop = asyncio.get_running_loop()
|
||||||
|
|
||||||
|
async def blocking_coroutine():
|
||||||
|
fut = loop.create_future()
|
||||||
|
# Block: fut result is never set
|
||||||
|
await fut
|
||||||
|
|
||||||
|
task = asyncio.create_task(blocking_coroutine())
|
||||||
|
|
||||||
|
wait = asyncio.create_task(asyncio.wait_for(task, timeout))
|
||||||
|
loop.call_soon(wait.cancel)
|
||||||
|
|
||||||
|
with self.assertRaises(asyncio.CancelledError):
|
||||||
|
await wait
|
||||||
|
|
||||||
|
# Python issue #23219: cancelling the wait must also cancel the task
|
||||||
|
self.assertTrue(task.cancelled())
|
||||||
|
|
||||||
|
async def test_cancel_blocking_wait_for(self):
|
||||||
|
await self._test_cancel_wait_for(None)
|
||||||
|
|
||||||
|
async def test_cancel_wait_for(self):
|
||||||
|
await self._test_cancel_wait_for(60.0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue