tests/extmod/asyncio_as_uasyncio.py: Fix qstr order dependency.

This test depends on the order in which qstrs are stored in ROM, which
affects the order in which `dir()` will probe the object to see what it
supports.  Because of the lazy-loading in asyncio/__init__.py, if it
tries to do e.g. `wait_for_ms` before `funcs` then it will import funcs,
making `funcs` later succeed. But in the other way around, `funcs` will
initially not be found.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
Jim Mussared 2023-10-09 14:07:28 +11:00 committed by Damien George
parent 1a017511d0
commit 78f4f30cb1
2 changed files with 26 additions and 7 deletions

View File

@ -1,12 +1,33 @@
try:
import uasyncio
import asyncio
except ImportError:
print("SKIP")
raise SystemExit
x = set(dir(uasyncio))
y = set(dir(asyncio)) - set(["event", "lock", "stream", "funcs"])
print(x - y)
print(y - x)
# Sample of public symbols we expect to see from `asyncio`. Verify they're all
# available on `uasyncio`.
expected = [
"CancelledError",
"create_task",
"current_task",
"Event",
"gather",
"get_event_loop",
"Lock",
"Loop",
"open_connection",
"run",
"run_until_complete",
"sleep",
"sleep_ms",
"start_server",
"StreamReader",
"StreamWriter",
"Task",
"ThreadSafeFlag",
"wait_for",
]
for e in expected:
getattr(uasyncio, e)

View File

@ -1,2 +0,0 @@
set()
set()