fix(ci): synchronize updates the commit status asynchronously

When a new commit is pushed to an existing pull request, the update of
the commit status will happen asynchronously, via the git hook.

   --- FAIL: TestPullRequestCommitStatus/synchronize (2.14s)
        actions_trigger_test.go:331:
            	Error Trace:	/workspace/forgejo/forgejo/tests/integration/actions_trigger_test.go:331
            	Error:      	Should be true
            	Test:       	TestPullRequestCommitStatus/synchronize
This commit is contained in:
Earl Warren 2024-11-12 08:13:33 +01:00
parent 520a7bca93
commit 983aed4268
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00

View file

@ -328,7 +328,9 @@ jobs:
sha, err := baseGitRepo.GetRefCommitID(pr.GetGitRefName()) sha, err := baseGitRepo.GetRefCommitID(pr.GetGitRefName())
require.NoError(t, err) require.NoError(t, err)
// verify the commit status changes to CommitStatusSuccess when the job changes to StatusSuccess // verify the commit status changes to CommitStatusSuccess when the job changes to StatusSuccess
assert.True(t, checkCommitStatus(sha, context, api.CommitStatusPending)) require.Eventually(t, func() bool {
return checkCommitStatus(sha, context, api.CommitStatusPending)
}, 30*time.Second, 1*time.Second)
for _, actionRun := range actionRuns { for _, actionRun := range actionRuns {
// verify the expected ActionRunJob was created and is StatusWaiting // verify the expected ActionRunJob was created and is StatusWaiting
job := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{RunID: actionRun.ID, CommitSHA: sha}) job := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{RunID: actionRun.ID, CommitSHA: sha})
@ -339,7 +341,9 @@ jobs:
actions_service.CreateCommitStatus(db.DefaultContext, job) actions_service.CreateCommitStatus(db.DefaultContext, job)
} }
// verify the commit status changed to CommitStatusSuccess because the job(s) changed to StatusSuccess // verify the commit status changed to CommitStatusSuccess because the job(s) changed to StatusSuccess
assert.True(t, checkCommitStatus(sha, context, api.CommitStatusSuccess)) require.Eventually(t, func() bool {
return checkCommitStatus(sha, context, api.CommitStatusSuccess)
}, 30*time.Second, 1*time.Second)
testCase.assert(t, sha, testCase.onType, testCase.action, actionRuns) testCase.assert(t, sha, testCase.onType, testCase.action, actionRuns)
}) })