@@ -31,6 +31,13 @@ func TestFunctionContains(t *testing.T) {
31
31
{`contains(fromJSON('[3.14,"second"]'), 3.14) }}` , true , "contains-item-number-number" },
32
32
{`contains(fromJSON('["","second"]'), fromJSON('[]')) }}` , false , "contains-item-str-arr" },
33
33
{`contains(fromJSON('["","second"]'), fromJSON('{}')) }}` , false , "contains-item-str-obj" },
34
+ {`contains(fromJSON('[{ "first": { "result": "success" }},{ "second": { "result": "success" }}]').first.result, 'success') }}` , true , "multiple-contains-item" },
35
+ {`contains(fromJSON('[{ "result": "success" },{ "result": "failure" }]').*.result, 'failure') }}` , true , "multiple-contains-dereferenced-failure-item" },
36
+ {`contains(fromJSON('[{ "result": "failure" },{ "result": "success" }]').*.result, 'success') }}` , true , "multiple-contains-dereferenced-success-item" },
37
+ {`contains(fromJSON('[{ "result": "failure" },{ "result": "success" }]').*.result, 'notthere') }}` , false , "multiple-contains-dereferenced-missing-item" },
38
+ {`contains(fromJSON('[{ "result": "failure", "outputs": { "key": "val1" } },{ "result": "success", "outputs": { "key": "val2" } }]').*.outputs.key, 'val1') }}` , true , "multiple-contains-dereferenced-output-item" },
39
+ {`contains(fromJSON('[{ "result": "failure", "outputs": { "key": "val1" } },{ "result": "success", "outputs": { "key": "val2" } }]').*.outputs.key, 'val2') }}` , true , "multiple-contains-dereferenced-output-item-2" },
40
+ {`contains(fromJSON('[{ "result": "failure", "outputs": { "key": "val1" } },{ "result": "success", "outputs": { "key": "val2" } }]').*.outputs.key, 'missing') }}` , false , "multiple-contains-dereferenced-output-misssing-item" },
34
41
}
35
42
36
43
env := & EvaluationEnvironment {}
@@ -249,3 +256,23 @@ func TestFunctionFormat(t *testing.T) {
249
256
})
250
257
}
251
258
}
259
+
260
+ func TestMapContains (t * testing.T ) {
261
+ env := & EvaluationEnvironment {
262
+ Needs : map [string ]Needs {
263
+ "first-job" : {
264
+ Outputs : map [string ]string {},
265
+ Result : "success" ,
266
+ },
267
+ "second-job" : {
268
+ Outputs : map [string ]string {},
269
+ Result : "failure" ,
270
+ },
271
+ },
272
+ }
273
+
274
+ output , err := NewInterpeter (env , Config {}).Evaluate ("contains(needs.*.result, 'failure')" , DefaultStatusCheckNone )
275
+ assert .Nil (t , err )
276
+
277
+ assert .Equal (t , true , output )
278
+ }
0 commit comments