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
from __future__ import annotations
from urllib.parse import quote
from pygitweb.api.subpage import Subpage
from pygitweb_pytesthtml.constants import PYTESTHTML_ACTION_NAME
from pygitweb_pytesthtml.report_embed import embed_pytest_html_report
from pygitweb_pytesthtml.worktree import report_path
class SubpagePytestHtml(Subpage):
"""
SubpagePytestHtml: Render the latest Pytest results for a project.
"""
def subpage_name(self) -> str:
return "pytesthtml"
def link_name(self, project: str) -> str | None:
return "Pytest Results"
def subpage_html(self, project: str) -> str | None:
path = report_path(project)
if not path.is_file():
return "<p>No pytest report found.</p>"
return embed_pytest_html_report(path.read_text(encoding="utf-8"))
def summary_value_suffix_html(self, project: str, project_enc: str) -> str | None:
a = quote(PYTESTHTML_ACTION_NAME, safe="")
return (
f'<a class="btn btn-sm btn-primary ms-2" role="button" href="/project/{project_enc}?a={a}">Run pytest</a>'
)