diff --git a/workflow/common/ancestry.go b/workflow/common/ancestry.go index fb241f134b6d..e91f7aac006c 100644 --- a/workflow/common/ancestry.go +++ b/workflow/common/ancestry.go @@ -23,6 +23,7 @@ const ( TaskResultFailed TaskResult = "Failed" TaskResultErrored TaskResult = "Errored" TaskResultSkipped TaskResult = "Skipped" + TaskResultOmitted TaskResult = "Omitted" TaskResultDaemoned TaskResult = "Daemoned" TaskResultAnySucceeded TaskResult = "AnySucceeded" TaskResultAllFailed TaskResult = "AllFailed" @@ -96,7 +97,7 @@ func ValidateTaskResults(dagTask *wfv1.DAGTask) error { split := strings.Split(matchGroup[1], ".") taskName, taskResult := split[0], TaskResult(split[1]) switch taskResult { - case TaskResultSucceeded, TaskResultFailed, TaskResultSkipped, TaskResultErrored, TaskResultDaemoned, TaskResultAnySucceeded, TaskResultAllFailed: + case TaskResultSucceeded, TaskResultFailed, TaskResultSkipped, TaskResultOmitted, TaskResultErrored, TaskResultDaemoned, TaskResultAnySucceeded, TaskResultAllFailed: // Do nothing default: return fmt.Errorf("task result '%s' for task '%s' is invalid", taskResult, taskName) diff --git a/workflow/common/ancestry_test.go b/workflow/common/ancestry_test.go index bded4df67e01..013f251d2a7a 100644 --- a/workflow/common/ancestry_test.go +++ b/workflow/common/ancestry_test.go @@ -88,6 +88,10 @@ func TestValidateTaskResults(t *testing.T) { err = ValidateTaskResults(task) assert.NoError(t, err) + task = &wfv1.DAGTask{Depends: "((task-1.Succeeded || task-1.Omitted) || task-2.Succeeded) && !task-3.Skipped && task-2.Failed || task-6.Succeeded"} + err = ValidateTaskResults(task) + assert.NoError(t, err) + task = &wfv1.DAGTask{Depends: "(task-1.DoeNotExist || task-2.Succeeded)"} err = ValidateTaskResults(task) assert.Error(t, err, "task result 'DoeNotExist' for task 'task-1' is invalid")