@@ -101,8 +101,8 @@ jobs:
101101 - run: echo job1
102102 job2:
103103 runs-on: ubuntu-latest
104- needs: [job1]
105104 if: ${{ always() }}
105+ needs: [job1]
106106 steps:
107107 - run: echo job2
108108` ,
@@ -238,6 +238,73 @@ jobs:
238238 },
239239 },
240240 },
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+ },
241308 }
242309 onGiteaRun (t , func (t * testing.T , u * url.URL ) {
243310 user2 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
@@ -262,12 +329,14 @@ jobs:
262329 }
263330
264331 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 ))
267334 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 ))
269338 for outputKey , outputValue := range tn .Outputs {
270- assert .Equal (t , outputValue , needs [ jobID ] .Outputs [outputKey ])
339+ assert .Equal (t , outputValue , actualNeed .Outputs [outputKey ])
271340 }
272341 }
273342 })
0 commit comments