Files
nixpkgs/pkgs/development/python-modules/i3ipc/fix-async-tests.patch
Tom Hunze 7db5a1c7ed python313Packages.i3ipc: fix build
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`.
2025-08-30 23:39:35 +02:00

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