Skip to content

Commit 4cf1553

Browse files
committed
Split ResolveResultRefs in two
ResolveResultRefs is always invoked with either the 2nd or the 3rd parameter set to nil, so it's actually two different things into one function. The second part of the function had not tests, so split it into a separate function and add tests for it.
1 parent acc5c22 commit 4cf1553

File tree

3 files changed

+128
-5
lines changed

3 files changed

+128
-5
lines changed

pkg/reconciler/pipelinerun/pipelinerun.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ func (c *Reconciler) updatePipelineResults(ctx context.Context, pr *v1alpha1.Pip
318318
})
319319
}
320320
}
321-
resolvedResultRefs, _ := resources.ResolveResultRefs(pipelineState, nil, pipelineSpec.Results)
321+
resolvedResultRefs := resources.ResolvePipelineResultRefs(pipelineState, pipelineSpec.Results)
322322
pr.Status.PipelineResults = getPipelineRunResults(pipelineSpec, resolvedResultRefs)
323323
}
324324
}
@@ -557,7 +557,7 @@ func (c *Reconciler) reconcile(ctx context.Context, pr *v1alpha1.PipelineRun) er
557557
}
558558

559559
nextRprts := pipelineState.GetNextTasks(candidateTasks)
560-
resolvedResultRefs, err := resources.ResolveResultRefs(pipelineState, nextRprts, nil)
560+
resolvedResultRefs, err := resources.ResolveResultRefs(pipelineState, nextRprts)
561561
if err != nil {
562562
c.Logger.Infof("Failed to resolve all task params for %q with error %v", pr.Name, err)
563563
pr.Status.SetCondition(&apis.Condition{

pkg/reconciler/pipelinerun/resources/resultrefresolution.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type ResolvedResultRef struct {
3737
}
3838

3939
// ResolveResultRefs resolves any ResultReference that are found in the target ResolvedPipelineRunTask
40-
func ResolveResultRefs(pipelineRunState PipelineRunState, targets PipelineRunState, pipelineResults []v1beta1.PipelineResult) (ResolvedResultRefs, error) {
40+
func ResolveResultRefs(pipelineRunState PipelineRunState, targets PipelineRunState) (ResolvedResultRefs, error) {
4141
var allResolvedResultRefs ResolvedResultRefs
4242
for _, target := range targets {
4343
resolvedResultRefs, err := convertParamsToResultRefs(pipelineRunState, target)
@@ -46,13 +46,19 @@ func ResolveResultRefs(pipelineRunState PipelineRunState, targets PipelineRunSta
4646
}
4747
allResolvedResultRefs = append(allResolvedResultRefs, resolvedResultRefs...)
4848
}
49+
return removeDup(allResolvedResultRefs), nil
50+
}
51+
52+
// ResolvePipelineResultRefs resolves any ResultReference that are found in the target ResolvedPipelineRunTask
53+
func ResolvePipelineResultRefs(pipelineRunState PipelineRunState, pipelineResults []v1beta1.PipelineResult) ResolvedResultRefs {
54+
var allResolvedResultRefs ResolvedResultRefs
4955
for _, result := range pipelineResults {
5056
resolvedResultRefs := convertPipelineResultToResultRefs(pipelineRunState, result)
5157
if resolvedResultRefs != nil {
5258
allResolvedResultRefs = append(allResolvedResultRefs, resolvedResultRefs...)
5359
}
5460
}
55-
return removeDup(allResolvedResultRefs), nil
61+
return removeDup(allResolvedResultRefs)
5662
}
5763

5864
// extractResultRefs resolves any ResultReference that are found in param or pipeline result

pkg/reconciler/pipelinerun/resources/resultrefresolution_test.go

Lines changed: 118 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1"
1111
"github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1"
1212
tb "github.com/tektoncd/pipeline/test/builder"
13+
corev1 "k8s.io/api/core/v1"
14+
"knative.dev/pkg/apis"
1315
)
1416

1517
func TestTaskParamResolver_ResolveResultRefs(t *testing.T) {
@@ -366,7 +368,7 @@ func TestResolveResultRefs(t *testing.T) {
366368
}
367369
for _, tt := range tests {
368370
t.Run(tt.name, func(t *testing.T) {
369-
got, err := ResolveResultRefs(tt.args.pipelineRunState, tt.args.targets, nil)
371+
got, err := ResolveResultRefs(tt.args.pipelineRunState, tt.args.targets)
370372
sort.SliceStable(got, func(i, j int) bool {
371373
return strings.Compare(got[i].FromTaskRun, got[j].FromTaskRun) < 0
372374
})
@@ -380,3 +382,118 @@ func TestResolveResultRefs(t *testing.T) {
380382
})
381383
}
382384
}
385+
386+
func TestResolvePipelineResultRefs(t *testing.T) {
387+
type args struct {
388+
pipelineRunState PipelineRunState
389+
pipelineResults []v1beta1.PipelineResult
390+
}
391+
pipelineRunState := PipelineRunState{
392+
{
393+
TaskRunName: "aTaskRun",
394+
TaskRun: tb.TaskRun("aTaskRun", tb.TaskRunStatus(
395+
tb.TaskRunResult("aResult", "aResultValue"),
396+
)),
397+
PipelineTask: &v1alpha1.PipelineTask{
398+
Name: "aTask",
399+
TaskRef: &v1alpha1.TaskRef{Name: "aTask"},
400+
},
401+
}, {
402+
TaskRunName: "bTaskRun",
403+
TaskRun: tb.TaskRun("bTaskRun", tb.TaskRunStatus(
404+
tb.StatusCondition(apis.Condition{
405+
Type: apis.ConditionSucceeded,
406+
Status: corev1.ConditionFalse})),
407+
),
408+
PipelineTask: &v1alpha1.PipelineTask{
409+
Name: "bTask",
410+
TaskRef: &v1alpha1.TaskRef{Name: "bTask"},
411+
},
412+
}, {
413+
PipelineTask: &v1alpha1.PipelineTask{
414+
Name: "cTask",
415+
TaskRef: &v1alpha1.TaskRef{Name: "cTask"},
416+
},
417+
},
418+
}
419+
420+
tests := []struct {
421+
name string
422+
args args
423+
want ResolvedResultRefs
424+
}{
425+
{
426+
name: "Test pipeline result from a successful task",
427+
args: args{
428+
pipelineRunState: pipelineRunState,
429+
pipelineResults: []v1beta1.PipelineResult{
430+
v1beta1.PipelineResult{
431+
Name: "from-a",
432+
Value: "$(tasks.aTask.results.aResult)",
433+
Description: "a result from a",
434+
},
435+
},
436+
},
437+
want: ResolvedResultRefs{
438+
{
439+
Value: v1beta1.ArrayOrString{
440+
Type: v1beta1.ParamTypeString,
441+
StringVal: "aResultValue",
442+
},
443+
ResultReference: v1beta1.ResultRef{
444+
PipelineTask: "aTask",
445+
Result: "aResult",
446+
},
447+
FromTaskRun: "aTaskRun",
448+
},
449+
},
450+
},
451+
{
452+
name: "Test results from a task that did not run and one and failed",
453+
args: args{
454+
pipelineRunState: pipelineRunState,
455+
pipelineResults: []v1beta1.PipelineResult{
456+
v1beta1.PipelineResult{
457+
Name: "from-a",
458+
Value: "$(tasks.aTask.results.aResult)",
459+
Description: "a result from a",
460+
},
461+
v1beta1.PipelineResult{
462+
Name: "from-b",
463+
Value: "$(tasks.bTask.results.bResult)",
464+
Description: "a result from b",
465+
},
466+
v1beta1.PipelineResult{
467+
Name: "from-c",
468+
Value: "$(tasks.cTask.results.cResult)",
469+
Description: "a result from c",
470+
},
471+
},
472+
},
473+
want: ResolvedResultRefs{
474+
{
475+
Value: v1beta1.ArrayOrString{
476+
Type: v1beta1.ParamTypeString,
477+
StringVal: "aResultValue",
478+
},
479+
ResultReference: v1beta1.ResultRef{
480+
PipelineTask: "aTask",
481+
Result: "aResult",
482+
},
483+
FromTaskRun: "aTaskRun",
484+
},
485+
},
486+
},
487+
}
488+
for _, tt := range tests {
489+
t.Run(tt.name, func(t *testing.T) {
490+
got := ResolvePipelineResultRefs(tt.args.pipelineRunState, tt.args.pipelineResults)
491+
sort.SliceStable(got, func(i, j int) bool {
492+
return strings.Compare(got[i].FromTaskRun, got[j].FromTaskRun) < 0
493+
})
494+
if d := cmp.Diff(tt.want, got); d != "" {
495+
t.Fatalf("ResolveResultRef -want, +got: %v", d)
496+
}
497+
})
498+
}
499+
}

0 commit comments

Comments
 (0)