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"; 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/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 ]; 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 [ 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 { };