Skip to content

Commit

Permalink
fix(pipeline): correct warning path for duplicate param name in pipeline
Browse files Browse the repository at this point in the history
fix #7650
  • Loading branch information
l-qing authored and tekton-robot committed Feb 12, 2024
1 parent 3d0d421 commit dcbd805
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 2 deletions.
2 changes: 1 addition & 1 deletion pkg/apis/pipeline/v1/pipeline_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ func validatePipelineTaskParameterUsage(tasks []PipelineTask, params ParamSpecs)
}
errs = errs.Also(validatePipelineParametersVariables(tasks, "params", allParamNames, arrayParamNames, objectParameterNameKeys))
for i, task := range tasks {
errs = errs.Also(task.Params.validateDuplicateParameters().ViaFieldIndex("params", i))
errs = errs.Also(task.Params.validateDuplicateParameters().ViaField("params").ViaIndex(i))
}
return errs
}
Expand Down
46 changes: 46 additions & 0 deletions pkg/apis/pipeline/v1/pipeline_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,52 @@ func TestPipeline_Validate_Failure(t *testing.T) {
Message: `non-existent variable in "$(params.doesnotexist)"`,
Paths: []string{"spec.finally[0].steps[0].script"},
},
}, {
name: "invalid duplicate parameter in pipeline task",
p: &Pipeline{
ObjectMeta: metav1.ObjectMeta{Name: "pipeline"},
Spec: PipelineSpec{
Tasks: []PipelineTask{{
Name: "pipeline-task",
TaskSpec: &EmbeddedTask{TaskSpec: TaskSpec{
Steps: []Step{{
Name: "some-step",
Image: "some-image",
Command: []string{"cmd"},
}},
}},
}},
Finally: []PipelineTask{{
Name: "invalid-pipeline-task",
Params: Params{
{
Name: "name",
Value: ParamValue{
Type: ParamTypeString,
StringVal: "",
},
},
{
Name: "name",
Value: ParamValue{
Type: ParamTypeString,
StringVal: "",
},
},
},
TaskSpec: &EmbeddedTask{TaskSpec: TaskSpec{
Steps: []Step{{
Name: "some-step",
Image: "some-image",
}},
}},
}},
},
},
expectedError: apis.FieldError{
Message: `parameter names must be unique, the parameter "name" is also defined at`,
Paths: []string{"spec.finally[0].params[1].name"},
},
}, {
name: "invalid task with pipelineRef and pipelineSpec",
wc: cfgtesting.EnableAlphaAPIFields,
Expand Down
2 changes: 1 addition & 1 deletion pkg/apis/pipeline/v1beta1/pipeline_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ func validatePipelineTaskParameterUsage(tasks []PipelineTask, params ParamSpecs)
}
errs = errs.Also(validatePipelineParametersVariables(tasks, "params", allParamNames, arrayParamNames, objectParameterNameKeys))
for i, task := range tasks {
errs = errs.Also(task.Params.validateDuplicateParameters().ViaFieldIndex("params", i))
errs = errs.Also(task.Params.validateDuplicateParameters().ViaField("params").ViaIndex(i))
}
return errs
}
Expand Down
46 changes: 46 additions & 0 deletions pkg/apis/pipeline/v1beta1/pipeline_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,52 @@ func TestPipeline_Validate_Failure(t *testing.T) {
Message: `non-existent variable in "$(params.doesnotexist)"`,
Paths: []string{"spec.finally[0].steps[0].script"},
},
}, {
name: "invalid duplicate parameter in pipeline task",
p: &Pipeline{
ObjectMeta: metav1.ObjectMeta{Name: "pipeline"},
Spec: PipelineSpec{
Tasks: []PipelineTask{{
Name: "pipeline-task",
TaskSpec: &EmbeddedTask{TaskSpec: TaskSpec{
Steps: []Step{{
Name: "some-step",
Image: "some-image",
Command: []string{"cmd"},
}},
}},
}},
Finally: []PipelineTask{{
Name: "invalid-pipeline-task",
Params: Params{
{
Name: "name",
Value: ParamValue{
Type: ParamTypeString,
StringVal: "",
},
},
{
Name: "name",
Value: ParamValue{
Type: ParamTypeString,
StringVal: "",
},
},
},
TaskSpec: &EmbeddedTask{TaskSpec: TaskSpec{
Steps: []Step{{
Name: "some-step",
Image: "some-image",
}},
}},
}},
},
},
expectedError: apis.FieldError{
Message: `parameter names must be unique, the parameter "name" is also defined at`,
Paths: []string{"spec.finally[0].params[1].name"},
},
}, {
name: "invalid task with pipelineRef and pipelineSpec",
wc: cfgtesting.EnableAlphaAPIFields,
Expand Down

0 comments on commit dcbd805

Please sign in to comment.