-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtests.nix
113 lines (96 loc) · 2.51 KB
/
tests.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{ lib
, stdenv
, system
, fenix
, makeRustPlatform
, rustPlatform
, pyFilter
, testFilter
, cargo-llvm-cov
, python3
, ruff
}:
let
inherit (python3.pkgs) pyperscan;
in
{
checks = with python3.pkgs; buildPythonPackage {
inherit (pyperscan) version;
pname = "${pyperscan.pname}-tests-checks";
format = "other";
src = lib.cleanSourceWith {
src = ./.;
filter = p: t: (pyFilter p t) || (testFilter p t);
};
dontBuild = true;
dontInstall = true;
nativeCheckInputs = [
mypy
ruff
pyperscan
];
checkPhase = ''
#mypy .
ruff .
'';
};
coverage =
let
rust-toolchain-llvm-tools = fenix.packages.${system}.complete.withComponents [
"llvm-tools-preview"
"cargo"
"rustc"
];
rustPlatform-cov = makeRustPlatform {
inherit stdenv;
cargo = rust-toolchain-llvm-tools;
rustc = rust-toolchain-llvm-tools;
};
pyperscan-cov = pyperscan.override { coverage = true; rustPlatform = rustPlatform-cov; rustc = rust-toolchain-llvm-tools; cargo = rust-toolchain-llvm-tools; };
in
with python3.pkgs; buildPythonPackage {
inherit (pyperscan-cov) version cargoDeps;
pname = "${pyperscan-cov.pname}-tests-pytest";
format = "other";
src = lib.cleanSourceWith {
src = ./.;
filter = p: t: (pyFilter p t) || (testFilter p t) || builtins.match "Cargo.(toml|lock)" != null;
};
dontBuild = true;
dontInstall = true;
nativeCheckInputs = with python3.pkgs; [
cargo-llvm-cov
pytestCheckHook
pyperscan-cov
rust-toolchain-llvm-tools
];
nativeBuildInputs = with rustPlatform-cov; [
cargoSetupHook
];
preConfigure = ''
source <(cargo llvm-cov show-env --export-prefix)
LLVM_COV_FLAGS=$(python -c 'import pyperscan; print(pyperscan._pyperscan.__file__, end="")')
export LLVM_COV_FLAGS
'';
postCheck = ''
rm -r $out
cargo llvm-cov report -vv --ignore-filename-regex cargo-vendor-dir --codecov --output-path $out
'';
};
pytest = python3.pkgs.buildPythonPackage
{
inherit (pyperscan) version;
pname = "${pyperscan.pname}-tests-pytest";
format = "other";
src = lib.cleanSourceWith {
src = ./.;
filter = p: t: (testFilter p t);
};
dontBuild = true;
dontInstall = true;
nativeCheckInputs = with python3.pkgs; [
pyperscan
pytestCheckHook
];
};
}