Skip to content

Commit c2b9727

Browse files
committed
improve TestWorkflowConcurrency_WithCancellation
1 parent f77f266 commit c2b9727

File tree

1 file changed

+40
-4
lines changed

1 file changed

+40
-4
lines changed

tests/integration/actions_concurrency_test.go

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func TestWorkflowConcurrency_WithCancellation(t *testing.T) {
149149
on: pull_request
150150
concurrency:
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/') }}
153153
jobs:
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

Comments
 (0)