diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ports/webassembly/asyncio_top_level_await.mjs | 32 | ||||
| -rw-r--r-- | tests/ports/webassembly/asyncio_top_level_await.mjs.exp | 6 |
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/ports/webassembly/asyncio_top_level_await.mjs b/tests/ports/webassembly/asyncio_top_level_await.mjs index 234b7a6ce..449985b49 100644 --- a/tests/ports/webassembly/asyncio_top_level_await.mjs +++ b/tests/ports/webassembly/asyncio_top_level_await.mjs @@ -88,3 +88,35 @@ print("top-level end") `); console.log("finished"); + +/**********************************************************/ +// Top-level await's on a JavaScript function that throws. + +console.log("= TEST 4 =========="); + +globalThis.jsFail = async () => { + console.log("jsFail"); + throw new Error("jsFail"); +}; + +await mp.runPythonAsync(` +import asyncio +import js + +# Test top-level catching from a failed JS await. +try: + await js.jsFail() +except Exception as er: + print("caught exception:", type(er), type(er.args[0]), er.args[1:]) + +async def main(): + try: + await js.jsFail() + except Exception as er: + print("caught exception:", type(er), type(er.args[0]), er.args[1:]) + +# Test top-level waiting on a coro that catches. +await main() +`); + +console.log("finished"); diff --git a/tests/ports/webassembly/asyncio_top_level_await.mjs.exp b/tests/ports/webassembly/asyncio_top_level_await.mjs.exp index 66fefd2dc..90c817f3d 100644 --- a/tests/ports/webassembly/asyncio_top_level_await.mjs.exp +++ b/tests/ports/webassembly/asyncio_top_level_await.mjs.exp @@ -17,3 +17,9 @@ top-level wait task task end top-level end finished += TEST 4 ========== +jsFail +caught exception: <class 'JsException'> <class 'JsProxy'> ('Error', 'jsFail') +jsFail +caught exception: <class 'JsException'> <class 'JsProxy'> ('Error', 'jsFail') +finished |
