@@ -572,6 +572,69 @@ func TestStepActionValidateError(t *testing.T) {
572
572
Message : `non-existent variable in "$(params.gitrepo.foo)"` ,
573
573
Paths : []string {"spec.volumeMounts[0]" },
574
574
},
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
+ },
575
638
}}
576
639
for _ , tt := range tests {
577
640
t .Run (tt .name , func (t * testing.T ) {
@@ -594,6 +657,7 @@ func TestStepActionValidateError(t *testing.T) {
594
657
if err == nil {
595
658
t .Fatalf ("Expected an error, got nothing for %v" , sa )
596
659
}
660
+ t .Logf ("Actual error: %v" , err )
597
661
if d := cmp .Diff (tt .expectedError .Error (), err .Error (), cmpopts .IgnoreUnexported (apis.FieldError {})); d != "" {
598
662
t .Errorf ("StepActionSpec.Validate() errors diff %s" , diff .PrintWantGot (d ))
599
663
}
@@ -1013,6 +1077,7 @@ func TestStepActionSpecValidateError(t *testing.T) {
1013
1077
if err == nil {
1014
1078
t .Fatalf ("Expected an error, got nothing for %v" , sa )
1015
1079
}
1080
+ t .Logf ("Actual error: %v" , err )
1016
1081
if d := cmp .Diff (tt .expectedError .Error (), err .Error (), cmpopts .IgnoreUnexported (apis.FieldError {})); d != "" {
1017
1082
t .Errorf ("StepActionSpec.Validate() errors diff %s" , diff .PrintWantGot (d ))
1018
1083
}
0 commit comments