Skip to content

Commit c6d38c9

Browse files
waveywavestekton-robot
authored andcommitted
test: check for circular dependency in stepaction validation
Signed-off-by: Vibhav Bobade <[email protected]>
1 parent 8df0a96 commit c6d38c9

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

pkg/apis/pipeline/v1alpha1/stepaction_validation_test.go

+65
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,69 @@ func TestStepActionValidateError(t *testing.T) {
572572
Message: `non-existent variable in "$(params.gitrepo.foo)"`,
573573
Paths: []string{"spec.volumeMounts[0]"},
574574
},
575+
}, {
576+
name: "circular dependency in param default values",
577+
fields: fields{
578+
Image: "myimage",
579+
Params: []v1.ParamSpec{{
580+
Name: "param1",
581+
Type: v1.ParamTypeString,
582+
Default: v1.NewStructuredValues("$(params.param2)"),
583+
}, {
584+
Name: "param2",
585+
Type: v1.ParamTypeString,
586+
Default: v1.NewStructuredValues("$(params.param1)"),
587+
}},
588+
},
589+
expectedError: *((&apis.FieldError{
590+
Message: `param "param1" default value has a circular dependency`,
591+
Paths: []string{"spec.params"},
592+
}).Also(&apis.FieldError{
593+
Message: `param "param2" default value has a circular dependency`,
594+
Paths: []string{"spec.params"},
595+
})),
596+
}, {
597+
name: "complex circular dependency in param default values",
598+
fields: fields{
599+
Image: "myimage",
600+
Params: []v1.ParamSpec{{
601+
Name: "param1",
602+
Type: v1.ParamTypeString,
603+
Default: v1.NewStructuredValues("$(params.param2)"),
604+
}, {
605+
Name: "param2",
606+
Type: v1.ParamTypeString,
607+
Default: v1.NewStructuredValues("$(params.param3)"),
608+
}, {
609+
Name: "param3",
610+
Type: v1.ParamTypeString,
611+
Default: v1.NewStructuredValues("$(params.param1)"),
612+
}},
613+
},
614+
expectedError: *((&apis.FieldError{
615+
Message: `param "param1" default value has a circular dependency`,
616+
Paths: []string{"spec.params"},
617+
}).Also(&apis.FieldError{
618+
Message: `param "param2" default value has a circular dependency`,
619+
Paths: []string{"spec.params"},
620+
}).Also(&apis.FieldError{
621+
Message: `param "param3" default value has a circular dependency`,
622+
Paths: []string{"spec.params"},
623+
})),
624+
}, {
625+
name: "self-referential param default value",
626+
fields: fields{
627+
Image: "myimage",
628+
Params: []v1.ParamSpec{{
629+
Name: "param1",
630+
Type: v1.ParamTypeString,
631+
Default: v1.NewStructuredValues("$(params.param1)"),
632+
}},
633+
},
634+
expectedError: apis.FieldError{
635+
Message: `param "param1" default value has a circular dependency`,
636+
Paths: []string{"spec.params"},
637+
},
575638
}}
576639
for _, tt := range tests {
577640
t.Run(tt.name, func(t *testing.T) {
@@ -594,6 +657,7 @@ func TestStepActionValidateError(t *testing.T) {
594657
if err == nil {
595658
t.Fatalf("Expected an error, got nothing for %v", sa)
596659
}
660+
t.Logf("Actual error: %v", err)
597661
if d := cmp.Diff(tt.expectedError.Error(), err.Error(), cmpopts.IgnoreUnexported(apis.FieldError{})); d != "" {
598662
t.Errorf("StepActionSpec.Validate() errors diff %s", diff.PrintWantGot(d))
599663
}
@@ -1013,6 +1077,7 @@ func TestStepActionSpecValidateError(t *testing.T) {
10131077
if err == nil {
10141078
t.Fatalf("Expected an error, got nothing for %v", sa)
10151079
}
1080+
t.Logf("Actual error: %v", err)
10161081
if d := cmp.Diff(tt.expectedError.Error(), err.Error(), cmpopts.IgnoreUnexported(apis.FieldError{})); d != "" {
10171082
t.Errorf("StepActionSpec.Validate() errors diff %s", diff.PrintWantGot(d))
10181083
}

0 commit comments

Comments
 (0)