diff --git a/pkgs/development/python-modules/coverage/default.nix b/pkgs/development/python-modules/coverage/default.nix index b41192c54dd3..6139480d86f5 100644 --- a/pkgs/development/python-modules/coverage/default.nix +++ b/pkgs/development/python-modules/coverage/default.nix @@ -1,34 +1,81 @@ { lib, buildPythonPackage, - fetchPypi, - mock, + fetchFromGitHub, + flaky, + hypothesis, + pytest-xdist, + pytestCheckHook, pythonOlder, setuptools, + tomli, }: buildPythonPackage rec { pname = "coverage"; - version = "7.8.0"; + version = "7.8.2"; pyproject = true; - # uses f strings - disabled = pythonOlder "3.5"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-ej1is7A7S2/UGghfNXSHTPlGy0YE0rTT6NyozVcMpQE="; + src = fetchFromGitHub { + owner = "nedbat"; + repo = "coveragepy"; + tag = version; + hash = "sha256-PCMGxyG5zIc8iigi9BsuhyuyQindZnewqTgxErT/jHw="; }; - nativeBuildInputs = [ setuptools ]; + postPatch = '' + # don't write to Nix store + substituteInPlace tests/conftest.py \ + --replace-fail 'if WORKER == "none":' "if False:" + ''; - # No tests in archive - doCheck = false; - nativeCheckInputs = [ mock ]; + build-system = [ setuptools ]; + + optional-dependencies = { + toml = lib.optionals (pythonOlder "3.11") [ + tomli + ]; + }; + + nativeCheckInputs = [ + flaky + hypothesis + pytest-xdist + pytestCheckHook + ]; + + preCheck = '' + export PATH="$PATH:$out/bin" + # import from $out + rm -r coverage + ''; + + disabledTests = [ + "test_all_our_source_files" + "test_doctest" + "test_files_up_one_level" + "test_get_encoded_zip_files" + "test_metadata" + "test_more_metadata" + "test_multi" + "test_no_duplicate_packages" + "test_xdist_sys_path_nuttiness_is_fixed" + "test_zipfile" + ]; + + disabledTestPaths = [ + "tests/test_debug.py" + "tests/test_plugins.py" + "tests/test_process.py" + "tests/test_report.py" + "tests/test_venv.py" + ]; meta = { - description = "Code coverage measurement for python"; - homepage = "https://coverage.readthedocs.io/"; - license = lib.licenses.bsd3; + changelog = "https://github.com/nedbat/coveragepy/blob/${src.tag}/CHANGES.rst"; + description = "Code coverage measurement for Python"; + homepage = "https://github.com/nedbat/coveragepy"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ dotlambda ]; }; }