diff --git a/tests/sample_data/extra_facets/override/test6-01.yml b/tests/sample_data/extra_facets/override/test6-01.yml new file mode 100644 index 0000000000..3f375d1314 --- /dev/null +++ b/tests/sample_data/extra_facets/override/test6-01.yml @@ -0,0 +1,12 @@ +--- +PROJECT1: + Amon: + tas: + source_var_name: "t2m" + cds_var_name: "temperature_2m" + uas: + source_var_name: "u10n" + cds_var_name: "10m_u-component_of_neutral_wind" + vas: + source_var_name: "v10n" + cds_var_name: "10m_v-component_of_neutral_wind" diff --git a/tests/sample_data/extra_facets/override/test6-02.yml b/tests/sample_data/extra_facets/override/test6-02.yml new file mode 100644 index 0000000000..7cf8a552cd --- /dev/null +++ b/tests/sample_data/extra_facets/override/test6-02.yml @@ -0,0 +1,6 @@ +--- +PROJECT1: + Amon: + vas: + source_var_name: "10v" + cds_var_name: "v-component_of_neutral_wind_at_10m" diff --git a/tests/sample_data/extra_facets/simple/test6-01.yml b/tests/sample_data/extra_facets/simple/test6-01.yml new file mode 100644 index 0000000000..d940b8c96b --- /dev/null +++ b/tests/sample_data/extra_facets/simple/test6-01.yml @@ -0,0 +1,5 @@ +--- +PROJECT1: + Amon: + tas: {source_var_name: "2t", cds_var_name: "2m_temperature"} + psl: {source_var_name: "msl", cds_var_name: "mean_sea_level_pressure"} diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index e5f5fde4b0..86c218673e 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -1,6 +1,10 @@ import pytest -from esmvalcore._config._config import _deep_update +from esmvalcore._config._config import ( + _deep_update, + _load_extra_facets, + importlib_files, +) TEST_DEEP_UPDATE = [([{}], {}), ([dict(a=1, b=2), dict(a=3)], dict(a=3, b=2)), ([ @@ -15,3 +19,33 @@ def test_deep_update(dictionaries, expected_merged): for update in dictionaries[1:]: merged = _deep_update(merged, update) assert expected_merged == merged + + +BASE_PATH = importlib_files('tests') / 'sample_data' / 'extra_facets' + +TEST_LOAD_EXTRA_FACETS = [ + ('test-nonexistent', tuple(), {}), + ('test-nonexistent', (BASE_PATH / 'simple', ), {}), + ('test6', (BASE_PATH / 'simple', ), + dict(PROJECT1=dict(Amon=dict( + tas=dict(cds_var_name='2m_temperature', source_var_name='2t'), + psl=dict(cds_var_name='mean_sea_level_pressure', + source_var_name='msl'))))), + ('test6', (BASE_PATH / 'simple', BASE_PATH / 'override'), + dict(PROJECT1=dict(Amon=dict( + tas=dict(cds_var_name='temperature_2m', source_var_name='t2m'), + psl=dict(cds_var_name='mean_sea_level_pressure', + source_var_name='msl'), + uas=dict(cds_var_name='10m_u-component_of_neutral_wind', + source_var_name='u10n'), + vas=dict(cds_var_name='v-component_of_neutral_wind_at_10m', + source_var_name='10v'), + )))), +] + + +@pytest.mark.parametrize('project, extra_facets_dir, expected', + TEST_LOAD_EXTRA_FACETS) +def test_load_extra_facets(project, extra_facets_dir, expected): + extra_facets = _load_extra_facets(project, extra_facets_dir) + assert extra_facets == expected