Upstream hasn't been very active in the past years.
1. pytest 8.4 introduced a breaking change where async tests fail
instead of generating a warning when there is no async-aware plugin
to handle them.
- Changelog: https://github.com/pytest-dev/pytest/releases/tag/8.4.0
- Fixed by adding pytest-asyncio as a dependency.
2. Upstream expects a very old version of pytest-asyncio. To make the
tests work with latest pytest-asyncio I added a patch which:
- Correctly decorates the only async fixture `i3` with
`@pytest_asyncio.fixture`.
- Configures `loop_scope='class'` for all async tests and the async
fixture `i3` to match the existing `scope='class'` on `i3`.
29 lines
790 B
Diff
29 lines
790 B
Diff
diff --git a/test/aio/ipctest.py b/test/aio/ipctest.py
|
|
index 88e4cda..3d0fd9c 100644
|
|
--- a/test/aio/ipctest.py
|
|
+++ b/test/aio/ipctest.py
|
|
@@ -1,5 +1,6 @@
|
|
from subprocess import Popen
|
|
import pytest
|
|
+import pytest_asyncio
|
|
|
|
from i3ipc.aio import Connection
|
|
from i3ipc import CommandReply
|
|
@@ -19,7 +20,7 @@ class IpcTest:
|
|
def event_loop(self):
|
|
return asyncio.get_event_loop()
|
|
|
|
- @pytest.fixture(scope='class')
|
|
+ @pytest_asyncio.fixture(scope='class', loop_scope='class')
|
|
async def i3(self):
|
|
process = Popen(['i3', '-c', 'test/i3.config'])
|
|
# wait for i3 to start up
|
|
diff --git a/pytest.ini b/pytest.ini
|
|
index 1ea6b80..788bdac 100644
|
|
--- a/pytest.ini
|
|
+++ b/pytest.ini
|
|
@@ -1,2 +1,3 @@
|
|
[pytest]
|
|
timeout = 5
|
|
+asyncio_default_test_loop_scope = class
|