diff --git a/pkgs/development/python-modules/i3ipc/default.nix b/pkgs/development/python-modules/i3ipc/default.nix index febac35bc4a4..e63dc1f68c55 100644 --- a/pkgs/development/python-modules/i3ipc/default.nix +++ b/pkgs/development/python-modules/i3ipc/default.nix @@ -4,6 +4,7 @@ fetchFromGitHub, xorg, pytest, + pytest-asyncio, pytest-xvfb, i3, xlib, @@ -23,12 +24,21 @@ buildPythonPackage rec { rev = "v${version}"; sha256 = "13bzs9dcv27czpnnbgz7a037lm8h991c8gk0qzzk5mq5yak24715"; }; + + patches = [ + # Upstream expects a very old version of pytest-asyncio. This patch correctly + # decorates async fixtures using pytest-asyncio and configures `loop_scope` + # where needed. + ./fix-async-tests.patch + ]; + propagatedBuildInputs = [ xlib ]; fontsConf = makeFontsConf { fontDirectories = [ ]; }; FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file nativeCheckInputs = [ pytest + pytest-asyncio xdpyinfo pytest-xvfb xorg.xvfb diff --git a/pkgs/development/python-modules/i3ipc/fix-async-tests.patch b/pkgs/development/python-modules/i3ipc/fix-async-tests.patch new file mode 100644 index 000000000000..41407c1d4878 --- /dev/null +++ b/pkgs/development/python-modules/i3ipc/fix-async-tests.patch @@ -0,0 +1,28 @@ +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