diff --git a/workflow/validate/validate.go b/workflow/validate/validate.go index 24fbf9cf902c..35acaab2ed9d 100644 --- a/workflow/validate/validate.go +++ b/workflow/validate/validate.go @@ -866,6 +866,9 @@ func validateArgumentsValues(prefix string, arguments wfv1.Arguments, allowEmpty return errors.Errorf(errors.CodeBadRequest, "%s%s.enum should contain at least one value", prefix, param.Name) } if param.Value == nil { + if allowEmptyValues { + return nil + } return errors.Errorf(errors.CodeBadRequest, "%s%s.value is required", prefix, param.Name) } valueSpecifiedInEnumList := false diff --git a/workflow/validate/validate_test.go b/workflow/validate/validate_test.go index 230d52967e1a..d48a389c3a41 100644 --- a/workflow/validate/validate_test.go +++ b/workflow/validate/validate_test.go @@ -2710,9 +2710,9 @@ func TestWorkflowTemplateWithArgumentValueNotFromEnumList(t *testing.T) { func TestWorkflowTemplateWithEnumValueWithoutValue(t *testing.T) { err := validateWorkflowTemplate(workflowTeamplateWithEnumValuesWithoutValue, ValidateOpts{}) - assert.EqualError(t, err, "spec.arguments.message.value is required") + assert.Nil(t, err) err = validateWorkflowTemplate(workflowTeamplateWithEnumValuesWithoutValue, ValidateOpts{Lint: true}) - assert.EqualError(t, err, "spec.arguments.message.value is required") + assert.Nil(t, err) err = validateWorkflowTemplate(workflowTeamplateWithEnumValuesWithoutValue, ValidateOpts{Submit: true}) assert.EqualError(t, err, "spec.arguments.message.value is required") }