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

1"""Validation of test runner IDs: must be unique.""" 

2 

3from typing import TYPE_CHECKING 

4 

5from ocarina.dsl.invariants.assertions import has_unique_elements 

6from ocarina.dsl.invariants.validate import FrameworkInvariantValidator 

7 

8if TYPE_CHECKING: 

9 from collections.abc import Sequence 

10 

11 from ocarina.dsl.invariants.internals.validation_chain import ( 

12 ValidationAssertBlock, 

13 ValidationStartBlock, 

14 ) 

15 from ocarina.dsl.testing.oc_test import Test 

16 

17 

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 

24 

25 return chain.assert_that( 

26 has_unique_elements(key=get_runner_id), 

27 msg="Test runner IDs must be unique.", 

28 ) 

29 

30 

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)