@@ -1295,9 +1295,10 @@ func TestFinallyTaskResultsToPipelineResults_Failure(t *testing.T) {
1295
1295
1296
1296
func TestValidatePipelineParameterVariables_Success (t * testing.T ) {
1297
1297
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
1301
1302
}{{
1302
1303
name : "valid string parameter variables" ,
1303
1304
params : []ParamSpec {{
@@ -1312,6 +1313,21 @@ func TestValidatePipelineParameterVariables_Success(t *testing.T) {
1312
1313
Name : "a-param" , Value : ParamValue {Type : ParamTypeString , StringVal : "$(params.baz) and $(params.foo-is-baz)" },
1313
1314
}},
1314
1315
}},
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" },
1315
1331
}, {
1316
1332
name : "valid string parameter variables in when expression" ,
1317
1333
params : []ParamSpec {{
@@ -1580,6 +1596,9 @@ func TestValidatePipelineParameterVariables_Success(t *testing.T) {
1580
1596
for _ , tt := range tests {
1581
1597
t .Run (tt .name , func (t * testing.T ) {
1582
1598
ctx := cfgtesting .EnableAlphaAPIFields (context .Background ())
1599
+ if tt .configMap != nil {
1600
+ ctx = cfgtesting .SetFeatureFlags (ctx , t , tt .configMap )
1601
+ }
1583
1602
err := ValidatePipelineParameterVariables (ctx , tt .tasks , tt .params )
1584
1603
if err != nil {
1585
1604
t .Errorf ("Pipeline.ValidatePipelineParameterVariables() returned error for valid pipeline parameters: %v" , err )
@@ -1921,7 +1940,7 @@ func TestValidatePipelineDeclaredParameterUsage_Failure(t *testing.T) {
1921
1940
t .Run (tt .name , func (t * testing.T ) {
1922
1941
err := validatePipelineTaskParameterUsage (tt .tasks , tt .params )
1923
1942
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" )
1925
1944
}
1926
1945
if d := cmp .Diff (tt .expectedError .Error (), err .Error (), cmpopts .IgnoreUnexported (apis.FieldError {})); d != "" {
1927
1946
t .Errorf ("PipelineSpec.Validate() errors diff %s" , diff .PrintWantGot (d ))
@@ -1936,7 +1955,69 @@ func TestValidatePipelineParameterVariables_Failure(t *testing.T) {
1936
1955
params []ParamSpec
1937
1956
tasks []PipelineTask
1938
1957
expectedError apis.FieldError
1958
+ configMap map [string ]string
1939
1959
}{{
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
+ }, {
1940
2021
name : "invalid parameter type" ,
1941
2022
params : []ParamSpec {{
1942
2023
Name : "foo" , Type : "invalidtype" ,
@@ -2105,6 +2186,10 @@ func TestValidatePipelineParameterVariables_Failure(t *testing.T) {
2105
2186
for _ , tt := range tests {
2106
2187
t .Run (tt .name , func (t * testing.T ) {
2107
2188
ctx := context .Background ()
2189
+ if tt .configMap != nil {
2190
+ ctx = cfgtesting .SetFeatureFlags (ctx , t , tt .configMap )
2191
+ }
2192
+
2108
2193
err := ValidatePipelineParameterVariables (ctx , tt .tasks , tt .params )
2109
2194
if err == nil {
2110
2195
t .Errorf ("Pipeline.ValidatePipelineParameterVariables() did not return error for invalid pipeline parameters" )
0 commit comments