From 6b48188474bacafd5701d005d0daa0784ac06b66 Mon Sep 17 00:00:00 2001 From: Jerop Date: Tue, 14 Jun 2022 11:22:08 -0400 Subject: [PATCH] TEP-0090: Test `isSuccessful` `isSuccessful` is an unexported function, so it did not have tests per the in [guidelines][guidelines]. The recommendation is to not test unexported function, and if needed to move the function into a package, test it then export the function. However, this is hard to do for the resources package because of cyclic dependencies. We already have tests for another unexported function - `isFailure` - and discussions to make exceptions for that guideline are ongoing. In this change, we add tests for `isSuccessful` to ensure it works as expected, as we prepare to make changes to the function to support `Matrix`. [guidelines]: https://github.com/tektoncd/community/blob/ac0ae1b304ef515e8099f772f42b91aac1b26e6b/standards.md#tests --- .../resources/pipelinerunresolution_test.go | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go b/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go index e4481a0f238..a8ec3462459 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go +++ b/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go @@ -3000,3 +3000,171 @@ func TestIsMatrixed(t *testing.T) { }) } } + +func TestIsSuccessful(t *testing.T) { + for _, tc := range []struct { + name string + rprt ResolvedPipelineRunTask + want bool + }{{ + name: "taskrun not started", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + }, + want: false, + }, { + name: "run not started", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + CustomTask: true, + }, + want: false, + }, { + name: "taskrun running", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + TaskRun: makeStarted(trs[0]), + }, + want: false, + }, { + + name: "run running", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + CustomTask: true, + Run: makeRunStarted(runs[0]), + }, + want: false, + }, { + name: "taskrun succeeded", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + TaskRun: makeSucceeded(trs[0]), + }, + want: true, + }, { + + name: "run succeeded", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + CustomTask: true, + Run: makeRunSucceeded(runs[0]), + }, + want: true, + }, { + name: "taskrun failed", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + TaskRun: makeFailed(trs[0]), + }, + want: false, + }, { + + name: "run failed", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + CustomTask: true, + Run: makeRunFailed(runs[0]), + }, + want: false, + }, { + name: "taskrun failed: retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + TaskRun: makeFailed(trs[0]), + }, + want: false, + }, { + + name: "run failed: retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + CustomTask: true, + Run: makeRunFailed(runs[0]), + }, + want: false, + }, { + name: "taskrun failed: no retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + TaskRun: withRetries(makeFailed(trs[0])), + }, + want: false, + }, { + + name: "run failed: no retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + CustomTask: true, + Run: withRunRetries(makeRunFailed(runs[0])), + }, + want: false, + }, { + name: "taskrun cancelled", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + TaskRun: withCancelled(makeFailed(trs[0])), + }, + want: false, + }, { + name: "taskrun cancelled but not failed", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + TaskRun: withCancelled(newTaskRun(trs[0])), + }, + want: false, + }, { + name: "run cancelled", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + Run: withRunCancelled(makeRunFailed(runs[0])), + CustomTask: true, + }, + want: false, + }, { + name: "run cancelled but not failed", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + Run: withRunCancelled(newRun(runs[0])), + CustomTask: true, + }, + want: false, + }, { + name: "taskrun cancelled: retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + TaskRun: withCancelled(makeFailed(trs[0])), + }, + want: false, + }, { + name: "run cancelled: retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + Run: withRunCancelled(makeRunFailed(runs[0])), + CustomTask: true, + }, + want: false, + }, { + name: "taskrun cancelled: no retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + TaskRun: withCancelled(withRetries(makeFailed(trs[0]))), + }, + want: false, + }, { + name: "run cancelled: no retries remaining", + rprt: ResolvedPipelineRunTask{ + PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + Run: withRunCancelled(withRunRetries(makeRunFailed(runs[0]))), + CustomTask: true, + }, + want: false, + }} { + t.Run(tc.name, func(t *testing.T) { + if got := tc.rprt.isSuccessful(); got != tc.want { + t.Errorf("expected isSuccessful: %t but got %t", tc.want, got) + } + + }) + } +}