From 08165617f55ed78bdd3e1fefa19d09c34509133d Mon Sep 17 00:00:00 2001 From: David Almeida Date: Wed, 16 Oct 2024 19:08:43 +0200 Subject: [PATCH] Update testing --- .../char_in_external_repo/nomenclature.yaml | 11 ++++++++ .../definitions/variable/variables.yaml | 7 +++++ .../char_in_str/nomenclature.yaml | 3 ++ .../variables.yaml | 0 .../variables.yaml | 0 .../{char_in_str => tag_in_str}/tag_fuel.yaml | 0 .../variables.yaml | 0 tests/test_codelist.py | 28 ++++++++++++++++--- 8 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 tests/data/codelist/illegal_chars/char_in_external_repo/nomenclature.yaml create mode 100644 tests/data/codelist/illegal_chars/char_in_str/definitions/variable/variables.yaml create mode 100644 tests/data/codelist/illegal_chars/char_in_str/nomenclature.yaml rename tests/data/codelist/stray_tag/{char_in_dict => tag_in_dict}/variables.yaml (100%) rename tests/data/codelist/stray_tag/{char_in_list => tag_in_list}/variables.yaml (100%) rename tests/data/codelist/stray_tag/{char_in_str => tag_in_str}/tag_fuel.yaml (100%) rename tests/data/codelist/stray_tag/{char_in_str => tag_in_str}/variables.yaml (100%) diff --git a/tests/data/codelist/illegal_chars/char_in_external_repo/nomenclature.yaml b/tests/data/codelist/illegal_chars/char_in_external_repo/nomenclature.yaml new file mode 100644 index 00000000..416164fe --- /dev/null +++ b/tests/data/codelist/illegal_chars/char_in_external_repo/nomenclature.yaml @@ -0,0 +1,11 @@ +dimensions: + - variable +repositories: + common-definitions: + url: https://github.com/IAMconsortium/common-definitions.git/ + hash: 3b75bb9 +definitions: + variable: + repository: + - common-definitions +illegal_characters: ['"' , ";"] # these are known to be present in common-definitions variables \ No newline at end of file diff --git a/tests/data/codelist/illegal_chars/char_in_str/definitions/variable/variables.yaml b/tests/data/codelist/illegal_chars/char_in_str/definitions/variable/variables.yaml new file mode 100644 index 00000000..19da6e1f --- /dev/null +++ b/tests/data/codelist/illegal_chars/char_in_str/definitions/variable/variables.yaml @@ -0,0 +1,7 @@ +- Primary Energy: + definition: Total primary energy consumption + unit: EJ/yr +- Primary Energy|Coal: + definition: Primary energy consumption of coal + unit: EJ/yr + info: Additional info with illegal " character \ No newline at end of file diff --git a/tests/data/codelist/illegal_chars/char_in_str/nomenclature.yaml b/tests/data/codelist/illegal_chars/char_in_str/nomenclature.yaml new file mode 100644 index 00000000..a0e942bc --- /dev/null +++ b/tests/data/codelist/illegal_chars/char_in_str/nomenclature.yaml @@ -0,0 +1,3 @@ +dimensions: + - variable +illegal_characters: ['"' , ";"] \ No newline at end of file diff --git a/tests/data/codelist/stray_tag/char_in_dict/variables.yaml b/tests/data/codelist/stray_tag/tag_in_dict/variables.yaml similarity index 100% rename from tests/data/codelist/stray_tag/char_in_dict/variables.yaml rename to tests/data/codelist/stray_tag/tag_in_dict/variables.yaml diff --git a/tests/data/codelist/stray_tag/char_in_list/variables.yaml b/tests/data/codelist/stray_tag/tag_in_list/variables.yaml similarity index 100% rename from tests/data/codelist/stray_tag/char_in_list/variables.yaml rename to tests/data/codelist/stray_tag/tag_in_list/variables.yaml diff --git a/tests/data/codelist/stray_tag/char_in_str/tag_fuel.yaml b/tests/data/codelist/stray_tag/tag_in_str/tag_fuel.yaml similarity index 100% rename from tests/data/codelist/stray_tag/char_in_str/tag_fuel.yaml rename to tests/data/codelist/stray_tag/tag_in_str/tag_fuel.yaml diff --git a/tests/data/codelist/stray_tag/char_in_str/variables.yaml b/tests/data/codelist/stray_tag/tag_in_str/variables.yaml similarity index 100% rename from tests/data/codelist/stray_tag/char_in_str/variables.yaml rename to tests/data/codelist/stray_tag/tag_in_str/variables.yaml diff --git a/tests/test_codelist.py b/tests/test_codelist.py index a5c36428..f49c3c56 100644 --- a/tests/test_codelist.py +++ b/tests/test_codelist.py @@ -12,6 +12,7 @@ MetaCodeList, ) from nomenclature.config import NomenclatureConfig +from nomenclature.definition import DataStructureDefinition from conftest import TEST_DATA_DIR, clean_up_external_repos @@ -224,17 +225,36 @@ def test_to_csv(): @pytest.mark.parametrize( "subfolder, match", [ - ("char_in_str", r"Unexpected bracket in variable: 'Primary Energy\|{Feul}'"), - ("char_in_list", r"Unexpected bracket in variable: 'Share\|Coal'"), - ("char_in_dict", r"Unexpected bracket in variable: 'Primary Energy'"), + ("tag_in_str", r"Unexpected character in variable: 'Primary Energy\|{Feul}'"), + ("tag_in_list", r"Unexpected character in variable: 'Share\|Coal'"), + ("tag_in_dict", r"Unexpected character in variable: 'Primary Energy'"), ], ) def test_stray_tag_fails(subfolder, match): """Check that stray brackets from, e.g. typos in a tag, raises expected error""" with raises(ValueError, match=match): - VariableCodeList.from_directory( + code_list = VariableCodeList.from_directory( "variable", MODULE_TEST_DATA_DIR / "stray_tag" / subfolder ) + code_list.check_illegal_characters() + + +def test_illegal_char_fails(): + """Check that illegal character raises expected error.""" + match = r"Unexpected character in variable: 'Primary Energy\|Coal'" + with raises(ValueError, match=match): + DataStructureDefinition( + MODULE_TEST_DATA_DIR / "illegal_chars" / "char_in_str" / "definitions" + ) + + +def test_illegal_char_ignores_external_repo(): + """Check that external repos are excluded from this check.""" + # the config includes illegal characters known to be in common-definitions + # the test will not raise errors as the check is skipped for external repos + DataStructureDefinition( + MODULE_TEST_DATA_DIR / "illegal_chars" / "char_in_external_repo" / "definitions" + ) def test_end_whitespace_fails():