From 8fbcb57b09882175f171473804a76aa3ff24a442 Mon Sep 17 00:00:00 2001 From: Attila Kobor Date: Tue, 9 Dec 2025 20:41:32 +0100 Subject: [PATCH] Fix error when scenario suites are commented in the config. --- .../core/execution/config_models.py | 7 ++++--- .../core/execution/dependencies.py | 14 ++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/openutm_verification/core/execution/config_models.py b/src/openutm_verification/core/execution/config_models.py index 02bd6705..59f27b13 100644 --- a/src/openutm_verification/core/execution/config_models.py +++ b/src/openutm_verification/core/execution/config_models.py @@ -108,11 +108,12 @@ class SuiteScenario(DataFiles): class SuiteConfig(StrictBaseModel): """Configuration for a test suite.""" - scenarios: List[SuiteScenario] + scenarios: Optional[List[SuiteScenario]] = Field(default_factory=list) def resolve_paths(self, base_path: Path) -> None: - for scenario in self.scenarios: - scenario.resolve_paths(base_path) + if self.scenarios: + for scenario in self.scenarios: + scenario.resolve_paths(base_path) class AppConfig(StrictBaseModel): diff --git a/src/openutm_verification/core/execution/dependencies.py b/src/openutm_verification/core/execution/dependencies.py index 9a1ac8b7..a76d546e 100644 --- a/src/openutm_verification/core/execution/dependencies.py +++ b/src/openutm_verification/core/execution/dependencies.py @@ -26,6 +26,8 @@ def get_scenario_docs(scenario_id: str) -> Optional[str]: else: logger.warning(f"Docs file not found: {docs_path}") return None + + def scenarios() -> Iterable[tuple[str, Callable[..., ScenarioResult]]]: """Provides scenarios to run with their functions. @@ -48,8 +50,9 @@ def scenarios() -> Iterable[tuple[str, Callable[..., ScenarioResult]]]: continue suite = config.suites[suite_name] - logger.info(f"Adding suite: {suite_name} with {len(suite.scenarios)} scenarios.") - for suite_scenario in suite.scenarios: + scenarios_list = suite.scenarios or [] + logger.info(f"Adding suite: {suite_name} with {len(scenarios_list)} scenarios.") + for suite_scenario in scenarios_list: scenarios_to_iterate.append((suite_name, suite_scenario)) for suite_name, item in scenarios_to_iterate: @@ -63,12 +66,7 @@ def scenarios() -> Iterable[tuple[str, Callable[..., ScenarioResult]]]: scenario_func = SCENARIO_REGISTRY[scenario_id].get("func") docs_content = get_scenario_docs(scenario_id) - CONTEXT.set({ - "scenario_id": scenario_id, - "suite_scenario": suite_scenario, - "suite_name": suite_name, - "docs": docs_content - }) + CONTEXT.set({"scenario_id": scenario_id, "suite_scenario": suite_scenario, "suite_name": suite_name, "docs": docs_content}) yield scenario_id, scenario_func else: logger.warning(f"Scenario {scenario_id} not found in registry.")