diff --git a/openhexa/sdk/pipelines/parameter.py b/openhexa/sdk/pipelines/parameter.py index 565d3b7f..d4faf7e5 100644 --- a/openhexa/sdk/pipelines/parameter.py +++ b/openhexa/sdk/pipelines/parameter.py @@ -526,10 +526,12 @@ def _validate_single(self, value: typing.Any): normalized_value = self.default if normalized_value is None: - if self.required: + if isinstance(self.type, Boolean): + normalized_value = False + elif self.required: raise ParameterValueError(f"{self.code} is required") - - return None + else: + return None pre_validated = self.type.validate(normalized_value) if self.choices is not None and pre_validated not in self.choices: diff --git a/tests/test_parameter.py b/tests/test_parameter.py index 35eea572..2dfe93e0 100644 --- a/tests/test_parameter.py +++ b/tests/test_parameter.py @@ -287,9 +287,13 @@ def test_parameter_validate_single(): parameter_2 = Parameter("arg2", type=int, default=3) assert parameter_2.validate(None) == 3 - # not required, no default + # not required, no default - booleans default to False parameter_3 = Parameter("arg3", type=bool, required=False) - assert parameter_3.validate(None) is None + assert parameter_3.validate(None) is False + + # required, no default - booleans default to False + parameter_5 = Parameter("arg5", type=bool, required=True) + assert parameter_5.validate(None) is False # choices parameter_4 = Parameter("arg4", type=str, choices=["ab", "cd"])