| from __future__ import annotations |
| |
| import sys |
| |
| import pytest |
| |
| asyncio = pytest.importorskip("asyncio") |
| m = pytest.importorskip("pybind11_tests.async_module") |
| |
| if sys.platform.startswith("emscripten"): |
| pytest.skip("Can't run a new event_loop in pyodide", allow_module_level=True) |
| |
| |
| @pytest.fixture |
| def event_loop(): |
| loop = asyncio.new_event_loop() |
| yield loop |
| loop.close() |
| |
| |
| async def get_await_result(x): |
| return await x |
| |
| |
| def test_await(event_loop): |
| assert event_loop.run_until_complete(get_await_result(m.SupportsAsync())) == 5 |
| |
| |
| def test_await_missing(event_loop): |
| with pytest.raises(TypeError): |
| event_loop.run_until_complete(get_await_result(m.DoesNotSupportAsync())) |