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