@@ -149,7 +149,7 @@ func TestWorkflowConcurrency_WithCancellation(t *testing.T) {
149
149
on: pull_request
150
150
concurrency:
151
151
group: pull-request-test
152
- cancel-in-progress: ${{ !startsWith(github.ref_name , 'dev-pub /') }}
152
+ cancel-in-progress: ${{ !startsWith(github.head_ref , 'do-not-cancel /') }}
153
153
jobs:
154
154
wf1-job:
155
155
runs-on: ubuntu-latest
@@ -195,7 +195,8 @@ jobs:
195
195
DecodeJSON (t , resp , & apiForkRepo )
196
196
forkRepo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : apiForkRepo .ID })
197
197
user4APICtx := NewAPITestContext (t , user4 .Name , forkRepo .Name , auth_model .AccessTokenScopeWriteRepository )
198
- // user4 creates a pull request
198
+
199
+ // user4 creates a pull request from branch "bugfix/bbb"
199
200
doAPICreateFile (user4APICtx , "user4-fix.txt" , & api.CreateFileOptions {
200
201
FileOptions : api.FileOptions {
201
202
NewBranchName : "bugfix/bbb" ,
@@ -227,14 +228,49 @@ jobs:
227
228
})
228
229
user2Session .MakeRequest (t , req , http .StatusOK )
229
230
// fetch the task and the previous task has been cancelled
230
- runner .fetchTask (t )
231
- pr2Run1 = unittest . AssertExistsAndLoadBean (t , & actions_model. ActionRun { ID : pr2Run1 . ID } )
231
+ pr2Task1 := runner .fetchTask (t )
232
+ _ , _ , pr2Run1 = getTaskAndJobAndRunByTaskID (t , pr2Task1 . Id )
232
233
assert .Equal (t , "pull-request-test" , pr2Run1 .ConcurrencyGroup )
233
234
assert .True (t , pr2Run1 .ConcurrencyCancel )
234
235
assert .True (t , pr2Run1 .Status .IsRunning ())
235
236
pr1Run1 = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {ID : pr1Run1 .ID })
236
237
assert .True (t , pr1Run1 .Status .IsCancelled ())
237
238
239
+ // user4 creates another pull request from branch "do-not-cancel/ccc"
240
+ doAPICreateFile (user4APICtx , "user4-fix2.txt" , & api.CreateFileOptions {
241
+ FileOptions : api.FileOptions {
242
+ NewBranchName : "do-not-cancel/ccc" ,
243
+ Message : "create user4-fix2.txt" ,
244
+ Author : api.Identity {
245
+ Name : user4 .Name ,
246
+ Email : user4 .Email ,
247
+ },
248
+ Committer : api.Identity {
249
+ Name : user4 .Name ,
250
+ Email : user4 .Email ,
251
+ },
252
+ Dates : api.CommitDateOptions {
253
+ Author : time .Now (),
254
+ Committer : time .Now (),
255
+ },
256
+ },
257
+ ContentBase64 : base64 .StdEncoding .EncodeToString ([]byte ("user4-fix2" )),
258
+ })(t )
259
+ doAPICreatePullRequest (user4APICtx , baseRepo .OwnerName , baseRepo .Name , baseRepo .DefaultBranch , fmt .Sprintf ("%s:do-not-cancel/ccc" , user4 .Name ))(t )
260
+ // cannot fetch the task because cancel-in-progress is false
261
+ runner .fetchNoTask (t )
262
+ runner .execTask (t , pr2Task1 , & mockTaskOutcome {
263
+ result : runnerv1 .Result_RESULT_SUCCESS ,
264
+ })
265
+ pr2Run1 = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {ID : pr2Run1 .ID })
266
+ assert .True (t , pr2Run1 .Status .IsSuccess ())
267
+ // fetch the task
268
+ pr3Task1 := runner .fetchTask (t )
269
+ _ , _ , pr3Run1 := getTaskAndJobAndRunByTaskID (t , pr3Task1 .Id )
270
+ assert .Equal (t , "pull-request-test" , pr3Run1 .ConcurrencyGroup )
271
+ assert .False (t , pr3Run1 .ConcurrencyCancel )
272
+ assert .True (t , pr3Run1 .Status .IsRunning ())
273
+
238
274
doAPIDeleteRepository (user4APICtx )(t )
239
275
doAPIDeleteRepository (user2APICtx )(t )
240
276
})
0 commit comments