Coverage for src / ocarina / custom_invariants / testing / oc_test_runners_ids.py: 55.56%
9 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-06-04 16:22 +0200
« prev ^ index » next coverage.py v7.13.5, created at 2026-06-04 16:22 +0200
1"""Validation of test runner IDs: must be unique."""
3from typing import TYPE_CHECKING
5from ocarina.dsl.invariants.assertions import has_unique_elements
6from ocarina.dsl.invariants.validate import FrameworkInvariantValidator
8if TYPE_CHECKING:
9 from collections.abc import Sequence
11 from ocarina.dsl.invariants.internals.validation_chain import (
12 ValidationAssertBlock,
13 ValidationStartBlock,
14 )
15 from ocarina.dsl.testing.oc_test import Test
18def _test_runners_ids_chain[Driver](
19 chain: ValidationStartBlock[Sequence[Test[Driver]]],
20 _: Sequence[Test[Driver]],
21) -> ValidationAssertBlock[Sequence[Test[Driver]]]:
22 def get_runner_id(t: Test[Driver]) -> str:
23 return t.test_id
25 return chain.assert_that(
26 has_unique_elements(key=get_runner_id),
27 msg="Test runner IDs must be unique.",
28 )
31def validate_test_runners_ids[Driver](
32 *, tests: Sequence[Test[Driver]], name: str
33) -> ValidationAssertBlock[Sequence[Test[Driver]]]:
34 """Validate that all test runner IDs are unique."""
35 return FrameworkInvariantValidator.create(tests, name, _test_runners_ids_chain)