@@ -101,8 +101,8 @@ jobs:
101
101
- run: echo job1
102
102
job2:
103
103
runs-on: ubuntu-latest
104
- needs: [job1]
105
104
if: ${{ always() }}
105
+ needs: [job1]
106
106
steps:
107
107
- run: echo job2
108
108
` ,
@@ -238,6 +238,73 @@ jobs:
238
238
},
239
239
},
240
240
},
241
+ {
242
+ treePath : ".gitea/workflows/jobs-outputs-with-matrix-failure.yml" ,
243
+ fileContent : `name: jobs-outputs-with-matrix-failure
244
+ on:
245
+ push:
246
+ paths:
247
+ - '.gitea/workflows/jobs-outputs-with-matrix-failure.yml'
248
+ jobs:
249
+ job1:
250
+ runs-on: ubuntu-latest
251
+ outputs:
252
+ output_1: ${{ steps.gen_output.outputs.output_1 }}
253
+ output_2: ${{ steps.gen_output.outputs.output_2 }}
254
+ output_3: ${{ steps.gen_output.outputs.output_3 }}
255
+ strategy:
256
+ matrix:
257
+ version: [1, 2, 3]
258
+ steps:
259
+ - name: Generate output
260
+ id: gen_output
261
+ run: |
262
+ version="${{ matrix.version }}"
263
+ echo "output_${version}=${version}" >> "$GITHUB_OUTPUT"
264
+ job2:
265
+ runs-on: ubuntu-latest
266
+ if: ${{ always() }}
267
+ needs: [job1]
268
+ steps:
269
+ - run: echo '${{ toJSON(needs.job1.outputs) }}'
270
+ ` ,
271
+ execPolicies : map [string ]* taskExecPolicy {
272
+ "job1 (1)" : {
273
+ result : runnerv1 .Result_RESULT_SUCCESS ,
274
+ outputs : map [string ]string {
275
+ "output_1" : "1" ,
276
+ "output_2" : "" ,
277
+ "output_3" : "" ,
278
+ },
279
+ },
280
+ "job1 (2)" : {
281
+ result : runnerv1 .Result_RESULT_FAILURE ,
282
+ outputs : map [string ]string {
283
+ "output_1" : "" ,
284
+ "output_2" : "" ,
285
+ "output_3" : "" ,
286
+ },
287
+ },
288
+ "job1 (3)" : {
289
+ result : runnerv1 .Result_RESULT_SUCCESS ,
290
+ outputs : map [string ]string {
291
+ "output_1" : "" ,
292
+ "output_2" : "" ,
293
+ "output_3" : "3" ,
294
+ },
295
+ },
296
+ },
297
+ expectedTaskNeeds : map [string ]* runnerv1.TaskNeed {
298
+ "job1" : {
299
+ Result : runnerv1 .Result_RESULT_FAILURE ,
300
+ Outputs : map [string ]string {
301
+ "output_1" : "1" ,
302
+ "output_2" : "" ,
303
+ "output_3" : "3" ,
304
+ },
305
+ },
306
+ },
307
+ },
241
308
}
242
309
onGiteaRun (t , func (t * testing.T , u * url.URL ) {
243
310
user2 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
@@ -262,12 +329,14 @@ jobs:
262
329
}
263
330
264
331
task := runner .fetchTask (t )
265
- needs := task .Needs
266
- assert .Len (t , needs , len (tc .expectedTaskNeeds ))
332
+ actualTaskNeeds := task .Needs
333
+ assert .Len (t , actualTaskNeeds , len (tc .expectedTaskNeeds ))
267
334
for jobID , tn := range tc .expectedTaskNeeds {
268
- assert .Len (t , needs [jobID ].Outputs , len (tn .Outputs ))
335
+ actualNeed := actualTaskNeeds [jobID ]
336
+ assert .Equal (t , tn .Result , actualNeed .Result )
337
+ assert .Len (t , actualNeed .Outputs , len (tn .Outputs ))
269
338
for outputKey , outputValue := range tn .Outputs {
270
- assert .Equal (t , outputValue , needs [ jobID ] .Outputs [outputKey ])
339
+ assert .Equal (t , outputValue , actualNeed .Outputs [outputKey ])
271
340
}
272
341
}
273
342
})
0 commit comments