diff --git a/src/ert/config/gen_kw_config.py b/src/ert/config/gen_kw_config.py index 49302f41c37..8f8d5f4e746 100644 --- a/src/ert/config/gen_kw_config.py +++ b/src/ert/config/gen_kw_config.py @@ -157,7 +157,17 @@ def _check_non_negative_parameter(param: str, prior: PriorDict) -> None: ).set_context(self.name) ) + unique_keys = set(str) for prior in self.get_priors(): + key = prior["key"] + if key in unique_keys: + errors.append( + ErrorInfo( + f"Duplicate GEN_KW keys {key!r} found, keys must be unique." + ).set_context(self.name) + ) + unique_keys.add(key) + if prior["function"] == "LOGNORMAL": _check_non_negative_parameter("MEAN", prior) _check_non_negative_parameter("STD", prior) diff --git a/tests/unit_tests/config/test_gen_kw_config.py b/tests/unit_tests/config/test_gen_kw_config.py index ef908ef4757..68e57c0dac3 100644 --- a/tests/unit_tests/config/test_gen_kw_config.py +++ b/tests/unit_tests/config/test_gen_kw_config.py @@ -34,6 +34,26 @@ def test_gen_kw_config(): assert len(conf.transfer_functions) == 3 +@pytest.mark.usefixtures("use_tmpdir") +def test_gen_kw_config_duplicate_keys_raises(): + with pytest.raises( + ConfigValidationError, + match="Duplicate GEN_KW keys 'KEY2' found, keys must be unique.", + ): + GenKwConfig( + name="KEY", + forward_init=False, + template_file="", + transfer_function_definitions=[ + "KEY1 UNIFORM 0 1", + "KEY2 UNIFORM 0 1", + "KEY2 UNIFORM 0 1", + "KEY3 UNIFORM 0 1", + ], + output_file="kw.txt", + ) + + @pytest.mark.usefixtures("use_tmpdir") def test_gen_kw_config_get_priors(): parameter_file = "parameters.txt"