summaryrefslogtreecommitdiffstatshomepage
path: root/tests/ports
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ports')
-rw-r--r--tests/ports/webassembly/asyncio_top_level_await.mjs65
-rw-r--r--tests/ports/webassembly/asyncio_top_level_await.mjs.exp12
2 files changed, 77 insertions, 0 deletions
diff --git a/tests/ports/webassembly/asyncio_top_level_await.mjs b/tests/ports/webassembly/asyncio_top_level_await.mjs
index d8a9cad422..234b7a6ce6 100644
--- a/tests/ports/webassembly/asyncio_top_level_await.mjs
+++ b/tests/ports/webassembly/asyncio_top_level_await.mjs
@@ -2,6 +2,71 @@
const mp = await (await import(process.argv[2])).loadMicroPython();
+/**********************************************************/
+// Top-level await for an Event which is set by a JavaScript
+// callback.
+
+console.log("= TEST 1 ==========");
+
+await mp.runPythonAsync(`
+import asyncio
+import js
+
+event = asyncio.Event()
+
+def callback():
+ print("callback set event")
+ event.set()
+
+js.setTimeout(callback, 100)
+
+print("top-level wait event")
+await event.wait()
+print("top-level end")
+`);
+
+console.log("finished");
+
+/**********************************************************/
+// Top-level await for a Task which is cancelled by a
+// JavaScript callback.
+
+console.log("= TEST 2 ==========");
+
+await mp.runPythonAsync(`
+import asyncio
+import js
+import time
+
+async def task():
+ print("task start")
+ await asyncio.sleep(5)
+ print("task end")
+
+def callback():
+ print("callback cancel task")
+ t.cancel()
+
+t = asyncio.create_task(task())
+js.setTimeout(callback, 100)
+
+print("top-level wait task")
+try:
+ t0 = time.time()
+ await t
+except asyncio.CancelledError:
+ dt = time.time() - t0
+ print("top-level task CancelledError", dt < 1)
+`);
+
+console.log("finished");
+
+/**********************************************************/
+// Top-level await for an Event and a Task, with the task
+// setting the event.
+
+console.log("= TEST 3 ==========");
+
await mp.runPythonAsync(`
import asyncio
diff --git a/tests/ports/webassembly/asyncio_top_level_await.mjs.exp b/tests/ports/webassembly/asyncio_top_level_await.mjs.exp
index 7232c5d4f0..66fefd2dce 100644
--- a/tests/ports/webassembly/asyncio_top_level_await.mjs.exp
+++ b/tests/ports/webassembly/asyncio_top_level_await.mjs.exp
@@ -1,3 +1,15 @@
+= TEST 1 ==========
+top-level wait event
+callback set event
+top-level end
+finished
+= TEST 2 ==========
+top-level wait task
+task start
+callback cancel task
+top-level task CancelledError True
+finished
+= TEST 3 ==========
top-level wait event
task set event
task sleep