mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-30 01:52:18 +00:00
34 lines
1.2 KiB
Python
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 ()),
|
|
)
|
|
)
|