From 000c3a2cce4e117b31357a7e7b1f90072ddc62ab Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Sat, 20 Jul 2024 02:23:16 +0200 Subject: [PATCH 1/4] python3Packages.pytest-cov-stub: init at 1.0.0 --- .../pytest-cov-stub/default.nix | 22 +++++ .../pytest-cov-stub/src/pyproject.toml | 13 +++ .../src/pytest_cov/__init__.py | 0 .../pytest-cov-stub/src/pytest_cov/plugin.py | 93 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 5 files changed, 130 insertions(+) create mode 100644 pkgs/development/python-modules/pytest-cov-stub/default.nix create mode 100644 pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml create mode 100644 pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py create mode 100644 pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py diff --git a/pkgs/development/python-modules/pytest-cov-stub/default.nix b/pkgs/development/python-modules/pytest-cov-stub/default.nix new file mode 100644 index 0000000000000..025a815686f66 --- /dev/null +++ b/pkgs/development/python-modules/pytest-cov-stub/default.nix @@ -0,0 +1,22 @@ +{ + lib, + buildPythonPackage, + python, + hatchling, +}: + +buildPythonPackage rec { + pname = "pytest-cov-stub"; + version = (lib.importTOML ./src/pyproject.toml).project.version; + pyproject = true; + + src = ./src; + + build-system = [ hatchling ]; + + meta = with lib; { + description = "Nixpkgs checkPhase stub for pytest-cov"; + license = licenses.mit; + maintainers = [ lib.maintainers.pbsds ]; + }; +} diff --git a/pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml b/pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml new file mode 100644 index 0000000000000..1f356aa7f9963 --- /dev/null +++ b/pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml @@ -0,0 +1,13 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "pytest-cov-nixpkgs-stub" +version = "1.0.0" + +[tool.hatch.build.targets.wheel] +packages = ["pytest_cov"] + +[project.entry-points.pytest11] +pytest_cov = "pytest_cov.plugin" diff --git a/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py new file mode 100644 index 0000000000000..d03f4d1f7a882 --- /dev/null +++ b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py @@ -0,0 +1,93 @@ +import argparse +import pytest + +class CoverageError(Exception): + pass + +class PytestCovWarning(pytest.PytestWarning): + pass + +class CovDisabledWarning(PytestCovWarning): + pass + +class CovReportWarning(PytestCovWarning): + pass + +class StoreReport(argparse.Action): + def __call__(self, parser, namespace, values, option_string=None): + report_type, file = values + namespace.cov_report[report_type] = file + +def pytest_addoption(parser): + group = parser.getgroup('cov', 'coverage reporting') + group.addoption( + '--cov', + action='append', + default=[], + metavar='SOURCE', + nargs='?', + const=True, + dest='cov_source', + ) + group.addoption( + '--cov-reset', + action='store_const', + const=[], + dest='cov_source', + ) + group.addoption( + '--cov-report', + action=StoreReport, + default={}, + metavar='TYPE', + type=lambda x: x.split(":", 1) if ":" in x else (x, None), + ) + group.addoption( + '--cov-config', + action='store', + default='.coveragerc', + metavar='PATH', + ) + group.addoption( + '--no-cov-on-fail', + action='store_true', + default=False, + ) + group.addoption( + '--no-cov', + action='store_true', + default=False, + ) + group.addoption( + '--cov-fail-under', + action='store', + metavar='MIN', + type=str, + ) + group.addoption( + '--cov-append', + action='store_true', + default=False, + ) + group.addoption( + '--cov-branch', + action='store_true', + default=None, + ) + group.addoption( + '--cov-context', + action='store', + metavar='CONTEXT', + type=str, + ) + +def pytest_configure(config): + config.addinivalue_line('markers', 'no_cover: disable coverage for this test.') + +@pytest.fixture +def no_cover(): + pass + +@pytest.fixture +def cov(): + pass diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b31e805460b6f..b32aac14fbcc8 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12343,6 +12343,8 @@ self: super: with self; { pytest-cov = callPackage ../development/python-modules/pytest-cov { }; + pytest-cov-stub = callPackage ../development/python-modules/pytest-cov-stub { }; + pytest-cram = callPackage ../development/python-modules/pytest-cram { }; pytest-datadir = callPackage ../development/python-modules/pytest-datadir { }; From 9fa22ab0f11c7e9210a8fc43be6a45985374df41 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Sat, 20 Jul 2024 02:23:44 +0200 Subject: [PATCH 2/4] todoman: migrate to pytest-cov-stub --- pkgs/applications/office/todoman/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/office/todoman/default.nix b/pkgs/applications/office/todoman/default.nix index 76fb6b906bd18..eae9e424857f0 100644 --- a/pkgs/applications/office/todoman/default.nix +++ b/pkgs/applications/office/todoman/default.nix @@ -45,7 +45,7 @@ python3.pkgs.buildPythonApplication rec { hypothesis pytestCheckHook glibcLocales - pytest-cov + pytest-cov-stub ]; LC_ALL = "en_US.UTF-8"; From f38a12b0c673b765044058417192331154200563 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Sat, 20 Jul 2024 02:24:03 +0200 Subject: [PATCH 3/4] python3Packages.strt: migrate to pytest-cov-stub --- pkgs/development/python-modules/strct/default.nix | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/strct/default.nix b/pkgs/development/python-modules/strct/default.nix index eff84c1f1dcb2..989b4e006d30b 100644 --- a/pkgs/development/python-modules/strct/default.nix +++ b/pkgs/development/python-modules/strct/default.nix @@ -4,6 +4,7 @@ buildPythonPackage, setuptools, pytestCheckHook, + pytest-cov-stub, sortedcontainers, }: @@ -19,13 +20,6 @@ buildPythonPackage rec { hash = "sha256-uPM2U+emZUCGqEhIeTBmaOu8eSfK4arqvv9bItBWpUs="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace-fail \ - '"--cov' \ - '#"--cov' - ''; - # don't append .dev0 to version env.RELEASING_PROCESS = "1"; @@ -33,6 +27,7 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook + pytest-cov-stub sortedcontainers ]; From 4619c4c49255b77506c2eabe408e37641349db9a Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Sat, 20 Jul 2024 02:24:28 +0200 Subject: [PATCH 4/4] remote-exec: migrate to pytest-cov-stub --- pkgs/tools/misc/remote-exec/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/misc/remote-exec/default.nix b/pkgs/tools/misc/remote-exec/default.nix index 84b8026c0a073..edf581b183ce9 100644 --- a/pkgs/tools/misc/remote-exec/default.nix +++ b/pkgs/tools/misc/remote-exec/default.nix @@ -8,6 +8,7 @@ , toml , watchdog , pytestCheckHook +, pytest-cov-stub , rsync }: @@ -44,11 +45,6 @@ buildPythonApplication rec { watchdog ]; - # disable pytest --cov - preCheck = '' - rm setup.cfg - ''; - doCheck = true; nativeCheckInputs = [ @@ -57,6 +53,7 @@ buildPythonApplication rec { checkInputs = [ pytestCheckHook + pytest-cov-stub ]; disabledTestPaths = lib.optionals stdenv.isDarwin [