1{
2 lib,
3 buildNpmPackage,
4 buildPythonPackage,
5 fetchPypi,
6 pythonOlder,
7 hatch-vcs,
8 hatchling,
9 jinja2,
10 pytest,
11 pytest-metadata,
12}:
13let
14 pname = "pytest-html";
15 version = "4.1.1";
16
17 src = fetchPypi {
18 pname = "pytest_html";
19 inherit version;
20 hash = "sha256-cKAeiuWAD0oHS1akyxAlyPT5sDi7pf4x48mOuZZobwc=";
21 };
22
23 web-assets = buildNpmPackage {
24 pname = "${pname}-web-assets";
25 inherit version src;
26
27 npmDepsHash = "sha256-aRod+SzVSb4bqEJzthfl/mH+DpbIe+j2+dNtrrhO2xU=";
28
29 installPhase = ''
30 runHook preInstall
31
32 install -Dm644 src/pytest_html/resources/{app.js,style.css} -t $out/lib
33
34 runHook postInstall
35 '';
36 };
37in
38
39buildPythonPackage {
40 inherit pname version src;
41 format = "pyproject";
42
43 disabled = pythonOlder "3.6";
44
45 nativeBuildInputs = [
46 hatch-vcs
47 hatchling
48 ];
49 buildInputs = [
50 pytest
51 web-assets
52 ];
53 propagatedBuildInputs = [
54 jinja2
55 pytest-metadata
56 ];
57
58 env.HATCH_BUILD_NO_HOOKS = true;
59
60 preBuild = ''
61 install -Dm644 ${web-assets}/lib/{app.js,style.css} -t src/pytest_html/resources
62 '';
63
64 # tests require network access
65 doCheck = false;
66
67 pythonImportsCheck = [ "pytest_html" ];
68
69 meta = with lib; {
70 description = "Plugin for generating HTML reports";
71 homepage = "https://github.com/pytest-dev/pytest-html";
72 license = licenses.mpl20;
73 maintainers = with maintainers; [ mpoquet ];
74 };
75}