litellm/tests/rust-python-harness/strategies/unit_tests_rust/runner.py
2026-09-24 14:10:51 +05:30

34 lines
1.2 KiB
Python

from __future__ import annotations
from collections.abc import Sequence
from pathlib import Path
from pydantic import BaseModel, ConfigDict
from ...shared.unit_runners.rust_runner import run_rust_tests
from ...shared.unit_runners.suite_runner import SuiteExecution
class RustSuite(BaseModel):
model_config = ConfigDict(frozen=True, extra="forbid")
cargo_manifest: str
cargo_package: str | None = None
cargo_filter: str
def run_suite(suite: RustSuite, repo_root: Path, pytest_args: Sequence[str] = ()) -> SuiteExecution:
del pytest_args
if not suite.cargo_filter:
return SuiteExecution(problems=("rust suites must configure a focused Cargo filter",))
inventory = run_rust_tests(
repo_root / suite.cargo_manifest, suite.cargo_package, suite.cargo_filter, collect_only=True
)
rust = run_rust_tests(repo_root / suite.cargo_manifest, suite.cargo_package, suite.cargo_filter)
return SuiteExecution(
problems=(
*(("native Rust tests did not all pass",) if set(inventory.tests) != set(rust.tests) else ()),
*((inventory.output,) if inventory.exit_code else ()),
*((rust.output,) if rust.exit_code else ()),
)
)