@@ -149,7 +149,7 @@ func TestWorkflowConcurrency_WithCancellation(t *testing.T) {
149149on: pull_request
150150concurrency:
151151 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 /') }}
153153jobs:
154154 wf1-job:
155155 runs-on: ubuntu-latest
@@ -195,7 +195,8 @@ jobs:
195195 DecodeJSON (t , resp , & apiForkRepo )
196196 forkRepo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : apiForkRepo .ID })
197197 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"
199200 doAPICreateFile (user4APICtx , "user4-fix.txt" , & api.CreateFileOptions {
200201 FileOptions : api.FileOptions {
201202 NewBranchName : "bugfix/bbb" ,
@@ -227,14 +228,49 @@ jobs:
227228 })
228229 user2Session .MakeRequest (t , req , http .StatusOK )
229230 // 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 )
232233 assert .Equal (t , "pull-request-test" , pr2Run1 .ConcurrencyGroup )
233234 assert .True (t , pr2Run1 .ConcurrencyCancel )
234235 assert .True (t , pr2Run1 .Status .IsRunning ())
235236 pr1Run1 = unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {ID : pr1Run1 .ID })
236237 assert .True (t , pr1Run1 .Status .IsCancelled ())
237238
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+
238274 doAPIDeleteRepository (user4APICtx )(t )
239275 doAPIDeleteRepository (user2APICtx )(t )
240276 })
0 commit comments