nixpkgs/pkgs/development/python-modules/coverage/default.nix

81 lines
1.6 KiB
Nix

{
lib,
buildPythonPackage,
fetchFromGitHub,
flaky,
hypothesis,
pytest-xdist,
pytestCheckHook,
pythonOlder,
setuptools,
tomli,
}:
buildPythonPackage rec {
pname = "coverage";
version = "7.8.2";
pyproject = true;
src = fetchFromGitHub {
owner = "nedbat";
repo = "coveragepy";
tag = version;
hash = "sha256-PCMGxyG5zIc8iigi9BsuhyuyQindZnewqTgxErT/jHw=";
};
postPatch = ''
# don't write to Nix store
substituteInPlace tests/conftest.py \
--replace-fail 'if WORKER == "none":' "if False:"
'';
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 = {
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 ];
};
}