Поставил HTML по дефолту

This commit is contained in:
2026-05-02 23:41:14 +03:00
parent 3184ff16ca
commit 2e75e53b89
4 changed files with 32 additions and 7 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "plba"
version = "0.3.13"
version = "0.3.14"
description = "Platform runtime for business applications"
readme = "README.md"
requires-python = ">=3.11"
+1 -1
View File
@@ -26,7 +26,7 @@ TraceResponseFormat = Literal["json", "text", "html"]
class TraceQueryRequest:
levels: tuple[TraceLevel, ...] = ("ERROR", "WARNING", "INFO")
include_attrs_json: bool = False
response_format: TraceResponseFormat = "text"
response_format: TraceResponseFormat = "html"
TraceLookupHandler = Callable[[str, TraceQueryRequest], Awaitable[TraceLogView]]
+1 -1
View File
@@ -14,7 +14,7 @@ from app_runtime.contracts.trace import TraceLevel, TraceLogRecord, TraceLogView
class TraceRequestParser:
def parse(self, request: Request) -> TraceQueryRequest:
raw_levels = request.query_params.get("levels")
raw_format = request.query_params.get("format", "text")
raw_format = request.query_params.get("format", "html")
response_format = raw_format.strip().lower()
if response_format not in {"json", "text", "html"}:
raise ValueError(f"unsupported trace format: {raw_format}")
+29 -4
View File
@@ -46,7 +46,7 @@ def _build_client(trace_provider=None) -> TestClient:
return TestClient(app)
def test_trace_endpoint_returns_text_with_default_levels() -> None:
def test_trace_endpoint_returns_html_by_default() -> None:
captured: list[tuple[str, TraceQueryRequest]] = []
async def trace_provider(trace_id: str, request: TraceQueryRequest) -> TraceLogView:
@@ -67,6 +67,32 @@ def test_trace_endpoint_returns_text_with_default_levels() -> None:
finally:
client.close()
assert response.status_code == 200
assert response.headers["content-type"].startswith("text/html")
assert "trace_id:" in response.text
assert "first error" in response.text
assert "second warning" in response.text
assert captured == [("trace-1", TraceQueryRequest(levels=("ERROR", "WARNING", "INFO"), include_attrs_json=False, response_format="html"))]
def test_trace_endpoint_returns_text_when_requested() -> None:
async def trace_provider(_trace_id: str, _request: TraceQueryRequest) -> TraceLogView:
return TraceLogView(
trace_id="trace-1",
parent_id="root-trace",
child_ids=("child-1", "child-2"),
records=(
_trace_record(row_id=1, level="ERROR", message="first error"),
_trace_record(row_id=2, level="WARNING", message="second warning"),
),
)
client = _build_client(trace_provider)
try:
response = client.get("/traces/trace-1?format=text")
finally:
client.close()
assert response.status_code == 200
assert response.text == (
"trace_id: trace-1\n"
@@ -79,7 +105,6 @@ def test_trace_endpoint_returns_text_with_default_levels() -> None:
"first error\n"
"second warning"
)
assert captured == [("trace-1", TraceQueryRequest(levels=("ERROR", "WARNING", "INFO"), include_attrs_json=False, response_format="text"))]
def test_trace_endpoint_appends_attrs_json_in_text_mode() -> None:
@@ -95,7 +120,7 @@ def test_trace_endpoint_appends_attrs_json_in_text_mode() -> None:
client = _build_client(trace_provider)
try:
response = client.get("/traces/trace-1?attrs_json=true")
response = client.get("/traces/trace-1?format=text&attrs_json=true")
finally:
client.close()
@@ -125,7 +150,7 @@ def test_trace_endpoint_separates_messages_by_step_in_text_mode() -> None:
client = _build_client(trace_provider)
try:
response = client.get("/traces/trace-1")
response = client.get("/traces/trace-1?format=text")
finally:
client.close()