From 785f75ad58bce69af10d92bfd70f5704329b3f35 Mon Sep 17 00:00:00 2001 From: jswxstw Date: Tue, 18 Jun 2024 14:16:32 +0800 Subject: [PATCH] fix(test): Add e2e test. Fixes #13196 Signed-off-by: oninowang --- test/e2e/cli_test.go | 41 +++++++++++++++++++ ...try-workflow-with-failed-exit-handler.yaml | 18 ++++++++ 2 files changed, 59 insertions(+) create mode 100644 test/e2e/testdata/retry-workflow-with-failed-exit-handler.yaml diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index c1a1bfd926b7..9de6025cdc76 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -963,6 +963,47 @@ func (s *CLISuite) TestRetryWorkflowWithContinueOn() { }) } +func (s *CLISuite) TestRetryWorkflowWithFailedExitHandler() { + var workflowName string + s.Given(). + Workflow(`@testdata/retry-workflow-with-failed-exit-handler.yaml`). + When(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeFailed). + Then(). + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + workflowName = metadata.Name + assert.Equal(t, 2, len(status.Nodes)) + }). + RunCli([]string{"retry", workflowName}, func(t *testing.T, output string, err error) { + if assert.NoError(t, err, output) { + assert.Contains(t, output, "Name:") + assert.Contains(t, output, "Namespace:") + } + }) + + s.Given(). + When(). + WaitForWorkflow(fixtures.ToBeCompleted). + Then(). + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + workflowName = metadata.Name + assert.Equal(t, wfv1.WorkflowFailed, status.Phase) + assert.Equal(t, 2, len(status.Nodes)) + }). + ExpectWorkflowNode(func(status wfv1.NodeStatus) bool { + return status.Name == workflowName + }, func(t *testing.T, status *wfv1.NodeStatus, pod *corev1.Pod) { + assert.Equal(t, wfv1.NodeSucceeded, status.Phase) + }). + ExpectWorkflowNode(func(status wfv1.NodeStatus) bool { + return strings.Contains(status.Name, ".onExit") + }, func(t *testing.T, status *wfv1.NodeStatus, pod *corev1.Pod) { + assert.Equal(t, wfv1.NodeFailed, status.Phase) + assert.Contains(t, status.Message, "exit code 1") + }) +} + func (s *CLISuite) TestWorkflowStop() { s.Given(). Workflow("@smoke/basic.yaml"). diff --git a/test/e2e/testdata/retry-workflow-with-failed-exit-handler.yaml b/test/e2e/testdata/retry-workflow-with-failed-exit-handler.yaml new file mode 100644 index 000000000000..565485c2b7f8 --- /dev/null +++ b/test/e2e/testdata/retry-workflow-with-failed-exit-handler.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + name: retry-workflow-with-failed-exit-handler +spec: + entrypoint: hello + onExit: exit-handler + templates: + - name: hello + container: + image: alpine:3.18 + command: [sh, -c] + args: ["echo hello"] + - name: exit-handler + container: + image: alpine:3.18 + command: [sh, -c] + args: ["exit 1"] \ No newline at end of file