@@ -1295,9 +1295,10 @@ func TestFinallyTaskResultsToPipelineResults_Failure(t *testing.T) {
12951295
12961296func TestValidatePipelineParameterVariables_Success (t * testing.T ) {
12971297 tests := []struct {
1298- name string
1299- params []ParamSpec
1300- tasks []PipelineTask
1298+ name string
1299+ params []ParamSpec
1300+ tasks []PipelineTask
1301+ configMap map [string ]string
13011302 }{{
13021303 name : "valid string parameter variables" ,
13031304 params : []ParamSpec {{
@@ -1312,6 +1313,21 @@ func TestValidatePipelineParameterVariables_Success(t *testing.T) {
13121313 Name : "a-param" , Value : ParamValue {Type : ParamTypeString , StringVal : "$(params.baz) and $(params.foo-is-baz)" },
13131314 }},
13141315 }},
1316+ }, {
1317+ name : "valid string parameter variables with enum" ,
1318+ params : []ParamSpec {{
1319+ Name : "baz" , Type : ParamTypeString , Enum : []string {"v1" , "v2" },
1320+ }, {
1321+ Name : "foo-is-baz" , Type : ParamTypeString ,
1322+ }},
1323+ tasks : []PipelineTask {{
1324+ Name : "bar" ,
1325+ TaskRef : & TaskRef {Name : "bar-task" },
1326+ Params : Params {{
1327+ Name : "a-param" , Value : ParamValue {Type : ParamTypeString , StringVal : "$(params.baz) and $(params.foo-is-baz)" },
1328+ }},
1329+ }},
1330+ configMap : map [string ]string {"enable-param-enum" : "true" },
13151331 }, {
13161332 name : "valid string parameter variables in when expression" ,
13171333 params : []ParamSpec {{
@@ -1580,6 +1596,9 @@ func TestValidatePipelineParameterVariables_Success(t *testing.T) {
15801596 for _ , tt := range tests {
15811597 t .Run (tt .name , func (t * testing.T ) {
15821598 ctx := cfgtesting .EnableAlphaAPIFields (context .Background ())
1599+ if tt .configMap != nil {
1600+ ctx = cfgtesting .SetFeatureFlags (ctx , t , tt .configMap )
1601+ }
15831602 err := ValidatePipelineParameterVariables (ctx , tt .tasks , tt .params )
15841603 if err != nil {
15851604 t .Errorf ("Pipeline.ValidatePipelineParameterVariables() returned error for valid pipeline parameters: %v" , err )
@@ -1921,7 +1940,7 @@ func TestValidatePipelineDeclaredParameterUsage_Failure(t *testing.T) {
19211940 t .Run (tt .name , func (t * testing.T ) {
19221941 err := validatePipelineTaskParameterUsage (tt .tasks , tt .params )
19231942 if err == nil {
1924- t .Errorf ("Pipeline.ValidatePipelineParameterVariables () did not return error for invalid pipeline parameters" )
1943+ t .Errorf ("Pipeline.validatePipelineTaskParameterUsage () did not return error for invalid pipeline parameters" )
19251944 }
19261945 if d := cmp .Diff (tt .expectedError .Error (), err .Error (), cmpopts .IgnoreUnexported (apis.FieldError {})); d != "" {
19271946 t .Errorf ("PipelineSpec.Validate() errors diff %s" , diff .PrintWantGot (d ))
@@ -1936,7 +1955,69 @@ func TestValidatePipelineParameterVariables_Failure(t *testing.T) {
19361955 params []ParamSpec
19371956 tasks []PipelineTask
19381957 expectedError apis.FieldError
1958+ configMap map [string ]string
19391959 }{{
1960+ name : "param enum with array type - failure" ,
1961+ params : []ParamSpec {{
1962+ Name : "param1" ,
1963+ Type : ParamTypeArray ,
1964+ Enum : []string {"v1" , "v2" },
1965+ }},
1966+ tasks : []PipelineTask {{
1967+ Name : "foo" ,
1968+ TaskRef : & TaskRef {Name : "foo-task" },
1969+ }},
1970+ configMap : map [string ]string {
1971+ "enable-param-enum" : "true" ,
1972+ },
1973+ expectedError : apis.FieldError {
1974+ Message : `enum can only be set with string type param` ,
1975+ Paths : []string {"params[param1]" },
1976+ },
1977+ }, {
1978+ name : "param enum with object type - failure" ,
1979+ params : []ParamSpec {{
1980+ Name : "param1" ,
1981+ Type : ParamTypeObject ,
1982+ Enum : []string {"v1" , "v2" },
1983+ }},
1984+ tasks : []PipelineTask {{
1985+ Name : "foo" ,
1986+ TaskRef : & TaskRef {Name : "foo-task" },
1987+ }},
1988+ configMap : map [string ]string {
1989+ "enable-param-enum" : "true" ,
1990+ },
1991+ expectedError : apis.FieldError {
1992+ Message : `enum can only be set with string type param` ,
1993+ Paths : []string {"params[param1]" },
1994+ },
1995+ }, {
1996+ name : "param enum with duplicate values - failure" ,
1997+ params : []ParamSpec {{
1998+ Name : "param1" ,
1999+ Type : ParamTypeString ,
2000+ Enum : []string {"v1" , "v1" , "v2" },
2001+ }},
2002+ configMap : map [string ]string {
2003+ "enable-param-enum" : "true" ,
2004+ },
2005+ expectedError : apis.FieldError {
2006+ Message : `parameter enum value v1 appears more than once` ,
2007+ Paths : []string {"params[param1]" },
2008+ },
2009+ }, {
2010+ name : "param enum with feature flag disabled - failure" ,
2011+ params : []ParamSpec {{
2012+ Name : "param1" ,
2013+ Type : ParamTypeString ,
2014+ Enum : []string {"v1" , "v2" },
2015+ }},
2016+ expectedError : apis.FieldError {
2017+ Message : "feature flag `enable-param-enum` should be set to true to use Enum" ,
2018+ Paths : []string {"params[param1]" },
2019+ },
2020+ }, {
19402021 name : "invalid parameter type" ,
19412022 params : []ParamSpec {{
19422023 Name : "foo" , Type : "invalidtype" ,
@@ -2105,6 +2186,10 @@ func TestValidatePipelineParameterVariables_Failure(t *testing.T) {
21052186 for _ , tt := range tests {
21062187 t .Run (tt .name , func (t * testing.T ) {
21072188 ctx := context .Background ()
2189+ if tt .configMap != nil {
2190+ ctx = cfgtesting .SetFeatureFlags (ctx , t , tt .configMap )
2191+ }
2192+
21082193 err := ValidatePipelineParameterVariables (ctx , tt .tasks , tt .params )
21092194 if err == nil {
21102195 t .Errorf ("Pipeline.ValidatePipelineParameterVariables() did not return error for invalid pipeline parameters" )
0 commit comments