From db137e70dcf67de26828e17c2d3dc9d21e971eb0 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 9 Apr 2020 13:15:47 +1000 Subject: extmod/uasyncio: Add Loop.new_event_loop method. This commit adds Loop.new_event_loop() which is used to reset the singleton event loop. This functionality is put here instead of in Loop.close() to make it possible to write code that is compatible with CPython. --- tests/extmod/uasyncio_new_event_loop.py | 36 +++++++++++++++++++++++++++++ tests/extmod/uasyncio_new_event_loop.py.exp | 6 +++++ 2 files changed, 42 insertions(+) create mode 100644 tests/extmod/uasyncio_new_event_loop.py create mode 100644 tests/extmod/uasyncio_new_event_loop.py.exp (limited to 'tests/extmod') diff --git a/tests/extmod/uasyncio_new_event_loop.py b/tests/extmod/uasyncio_new_event_loop.py new file mode 100644 index 000000000..b711befba --- /dev/null +++ b/tests/extmod/uasyncio_new_event_loop.py @@ -0,0 +1,36 @@ +# Test Loop.new_event_loop() + +try: + import uasyncio as asyncio +except ImportError: + try: + import asyncio + except ImportError: + print("SKIP") + raise SystemExit + + +async def task(): + for i in range(4): + print("task", i) + await asyncio.sleep(0) + await asyncio.sleep(0) + + +async def main(): + print("start") + loop.create_task(task()) + await asyncio.sleep(0) + print("stop") + loop.stop() + + +# Use default event loop to run some tasks +loop = asyncio.get_event_loop() +loop.create_task(main()) +loop.run_forever() + +# Create new event loop, old one should not keep running +loop = asyncio.new_event_loop() +loop.create_task(main()) +loop.run_forever() diff --git a/tests/extmod/uasyncio_new_event_loop.py.exp b/tests/extmod/uasyncio_new_event_loop.py.exp new file mode 100644 index 000000000..9e104fda3 --- /dev/null +++ b/tests/extmod/uasyncio_new_event_loop.py.exp @@ -0,0 +1,6 @@ +start +task 0 +stop +start +task 0 +stop -- cgit v1.2.3