litellm/tests/rust-python-harness/strategies/unit_tests_mapping/reporting.py
yujonglee ee08c36fc0
refactor(tests): restructure rust python harness around strategy definitions (#39628)
* wip

* refactor(tests): move sdk function tracing into rust python harness

* dead code

* fix: handle harness keyboard interrupts

* refactor(tests): deduplicate rust python harness helpers

* fix(harness): expose validated strategy choices

* wip

* refactor(harness): let strategies own parity reports

* docs(harness): update strategy structure

* refactor(harness): localize strategy report views

* wip

* fix(harness): satisfy mapping runner type checks

* fix(harness): clarify trace parity output

* wip

* fix(harness): clarify unit mapping report

* fix(harness): finalize trace parity contracts

* refactor(harness): structure parity contracts

* feat: derive unit test mapping from traces

* feat(harness): map rstest test families

* feat(ocr): port Azure document intelligence tests

* feat(harness): enforce complete unit mappings

* feat(ocr): add reducto core transforms

* feat(harness): classify host-only unit tests

* fix(ocr): complete Rust provider plumbing

* fix(harness): reuse OCR parity workers
2026-09-03 21:15:01 -07:00

36 lines
1.3 KiB
Python

from __future__ import annotations
from collections.abc import Sequence
from typing import Final
from pydantic import ValidationError
from ...shared.reporting.models import CaseResult
from ...shared.reporting.rendering import ReportSection, render_case_outcome
from .mapping_report import MappingReportArtifact, mapping_report_lines
from .runner import MAPPING_REPORT_ARTIFACT
def _render_artifact(body: str) -> str:
try:
artifact: Final = MappingReportArtifact.model_validate_json(body)
except ValidationError as error:
return f"Mapping report artifact is invalid: {error}"
return "\n".join(mapping_report_lines(artifact.report, detailed=artifact.detailed))
def _render_result(result: CaseResult) -> str:
reports: Final = tuple(
_render_artifact(artifact.body)
for artifacts in result.artifacts.values()
for artifact in artifacts
if artifact.kind == MAPPING_REPORT_ARTIFACT
)
if reports:
return "\n".join((f"Case: {result.case.display_name}", *reports))
return render_case_outcome(result)
def render_mapping_results(results: Sequence[CaseResult]) -> tuple[ReportSection, ...]:
blocks: Final = tuple(_render_result(result) for result in results)
return (ReportSection("Python/Rust unit-test mappings", blocks or ("No mapping cases selected",)),)