From 1e95db28f3f6ae3440000921a6e574253dc7594d Mon Sep 17 00:00:00 2001 From: David Almeida Date: Wed, 13 Nov 2024 13:02:43 +0100 Subject: [PATCH] Pass DataStructureDefinition to checks --- nomenclature/testing.py | 33 ++++++--------------------------- tests/test_cli.py | 4 ++-- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/nomenclature/testing.py b/nomenclature/testing.py index 0a29bc61..4cc524de 100644 --- a/nomenclature/testing.py +++ b/nomenclature/testing.py @@ -5,7 +5,6 @@ import yaml from nomenclature.definition import DataStructureDefinition -from nomenclature.config import NomenclatureConfig from nomenclature.processor import ( DataValidator, RegionProcessor, @@ -55,11 +54,9 @@ def assert_valid_yaml(path: Path): def _check_mappings( path: Path, - definitions: str = "definitions", - dimensions: Optional[List[str]] = None, + dsd: DataStructureDefinition, mappings: Optional[str] = None, ) -> None: - dsd = DataStructureDefinition(path / definitions, dimensions) if mappings is None: if (path / "mappings").is_dir(): RegionProcessor.from_directory(path / "mappings", dsd) @@ -86,13 +83,11 @@ def _collect_processor_errors( def _check_processor_directory( path: Path, + dsd: DataStructureDefinition, processor: Processor, processor_arg: str, folder: Optional[str] = None, - definitions: Optional[str] = "definitions", - dimensions: Optional[List[str]] = None, ) -> None: - dsd = DataStructureDefinition(path / definitions, dimensions) if folder is None: if (path / processor_arg).is_dir(): _collect_processor_errors(path / processor_arg, processor, dsd) @@ -145,28 +140,12 @@ def assert_valid_structure( f"Definitions directory not found: {path / definitions}" ) - if not dimensions: # if "dimensions" were not specified - dimensions = ( - NomenclatureConfig.from_file(path / "nomenclature.yaml").dimensions - if (path / "nomenclature.yaml").is_file() - else [x.stem for x in (path / definitions).iterdir() if x.is_dir()] - ) - if not dimensions: - raise FileNotFoundError( - f"`definitions` directory is empty: {path / definitions}" - ) - _check_mappings(path, definitions, dimensions, mappings) - _check_processor_directory( - path, - RequiredDataValidator, - "required_data", - required_data, - definitions, - dimensions, - ) + dsd = DataStructureDefinition(path / definitions, dimensions) + _check_mappings(path, dsd, mappings) _check_processor_directory( - path, DataValidator, "validate_data", validate_data, definitions, dimensions + path, dsd, RequiredDataValidator, "required_data", required_data ) + _check_processor_directory(path, dsd, DataValidator, "validate_data", validate_data) # Todo: add function which runs `DataStructureDefinition(path).validate(scenario)` diff --git a/tests/test_cli.py b/tests/test_cli.py index ce698579..ed67b9d9 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -305,8 +305,8 @@ def test_cli_empty_definitions_dir(): ) assert cli_result.exit_code == 1 - assert isinstance(cli_result.exception, FileNotFoundError) - assert "`definitions` directory is empty" in str(cli_result.exception) + assert isinstance(cli_result.exception, ValueError) + assert "No dimensions specified in data structure." in str(cli_result.exception) def test_check_region_aggregation(tmp_path):