diff --git a/src/model/script_config.py b/src/model/script_config.py index 677d23d2..debbb358 100644 --- a/src/model/script_config.py +++ b/src/model/script_config.py @@ -122,7 +122,11 @@ def get_sort_key(parameter): if required_parameters and any(r not in processed for r in required_parameters): continue - value = parameter.normalize_user_value(param_values.get(parameter.name)) + if parameter.constant: + value = parameter.default + else: + value = parameter.normalize_user_value(param_values.get(parameter.name)) + validation_error = parameter.validate_value(value) if validation_error: if skip_invalid_parameters: diff --git a/src/tests/script_config_test.py b/src/tests/script_config_test.py index fd6fd585..b38079fa 100644 --- a/src/tests/script_config_test.py +++ b/src/tests/script_config_test.py @@ -479,6 +479,21 @@ def test_set_all_values_for_included(self): self.assertEqual(values, config_model.parameter_values) + def test_set_all_values_for_dependant_on_constant(self): + included_path = test_utils.write_script_config({'parameters': [ + create_script_param_config('included_param1', values_script='echo ${p1}'), + ]}, 'included') + config_model = _create_config_model( + 'main_conf', + config={ + 'include': included_path, + 'parameters': [create_script_param_config('p1', constant=True, default='t1\nt2\nt3')]}) + + values = {'included_param1': 't2'} + config_model.set_all_param_values(values) + + self.assertEqual({'included_param1': 't2', 'p1': 't1\nt2\nt3'}, config_model.parameter_values) + def test_dynamic_include_add_parameter_with_default(self): (config_model, included_path) = self.prepare_config_model_with_included([ create_script_param_config('included_param', default='abc 123') @@ -853,21 +868,20 @@ def test_get_sorted_with_parameters(self): ]) self.assertEqual(expected, config) - def test_json_comments(self): config = get_sorted_config(custom_json.loads( - """{ - // Comment 1 - "parameters": [ - // Comment 2 - {"name": "param2", "description": "desc 1"}, - {"type": "int", "name": "paramA"}, - {"default": "false", "name": "param1", "no_value": true} - ], - // Comment 3 - "name": "Conf X" - }""") - ) + """{ + // Comment 1 + "parameters": [ + // Comment 2 + {"name": "param2", "description": "desc 1"}, + {"type": "int", "name": "paramA"}, + {"default": "false", "name": "param1", "no_value": true} + ], + // Comment 3 + "name": "Conf X" + }""") + ) expected = OrderedDict([ ('name', 'Conf X'),