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
from __future__ import annotations
import subprocess
from pathlib import Path
from fastapi import Request
from starlette.responses import Response
from pygitweb.api.action import Action
from pygitweb.config import settings
from pygitweb_pytesthtml.constants import PYTESTHTML_ACTION_NAME
class ActionPytestHtml(Action):
"""
ActionPytestHtml: Run pytest and render the results.
"""
def action_name(self) -> str:
return PYTESTHTML_ACTION_NAME
def action(self, project: str, req: Request | None = None) -> Response | None:
cwd = Path(settings.PROJECTROOT) / project
subprocess.run(
["pytest", "--html=.pygitweb/pytest_report.html", "--self-contained-html"],
cwd=str(cwd),
)
return None