diff options
| author | Damien George <damien@micropython.org> | 2021-11-17 13:45:42 +1100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2021-11-17 14:11:31 +1100 |
| commit | 43d08688c398184013bbfb0190e2529e4032e003 (patch) | |
| tree | 08880ce3322ac038695ad3f3fb7249635b2ab4db /tests/extmod/uasyncio_gather.py | |
| parent | 5cf71b55960651fc506df0ac41490f12dd1d63fd (diff) | |
extmod/uasyncio: Fix gather returning exceptions from a cancelled task.
Fixes issue #5882.
Diffstat (limited to 'tests/extmod/uasyncio_gather.py')
| -rw-r--r-- | tests/extmod/uasyncio_gather.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/tests/extmod/uasyncio_gather.py b/tests/extmod/uasyncio_gather.py index 0e2948b07..6053873db 100644 --- a/tests/extmod/uasyncio_gather.py +++ b/tests/extmod/uasyncio_gather.py @@ -22,8 +22,9 @@ async def factorial(name, number): async def task(id): print("start", id) - await asyncio.sleep(0.2) + await asyncio.sleep(0.02) print("end", id) + return id async def gather_task(): @@ -36,12 +37,17 @@ async def main(): # Simple gather with return values print(await asyncio.gather(factorial("A", 2), factorial("B", 3), factorial("C", 4))) + # Test return_exceptions, where one task is cancelled and the other finishes normally + tasks = [asyncio.create_task(task(1)), asyncio.create_task(task(2))] + tasks[0].cancel() + print(await asyncio.gather(*tasks, return_exceptions=True)) + # Cancel a multi gather # TODO doesn't work, Task should not forward cancellation from gather to sub-task # but rather CancelledError should cancel the gather directly, which will then cancel # all sub-tasks explicitly # t = asyncio.create_task(gather_task()) - # await asyncio.sleep(0.1) + # await asyncio.sleep(0.01) # t.cancel() # await asyncio.sleep(0.01) |
