Skip to content

Commit ab05810

Browse files
committed
always start automerge check after ScheduleAutoMerge
Co-authored-by: posativ
1 parent 15909bd commit ab05810

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

services/automerge/automerge.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,17 @@ func ScheduleAutoMerge(ctx context.Context, doer *user_model.User, pull *issues_
6060
if err := pull_model.ScheduleAutoMerge(ctx, doer, pull.ID, style, message, deleteBranchAfterMerge); err != nil {
6161
return err
6262
}
63-
scheduled = true
64-
6563
_, err = issues_model.CreateAutoMergeComment(ctx, issues_model.CommentTypePRScheduledToAutoMerge, pull, doer)
6664
return err
6765
})
66+
// Old code made "scheduled" to be true after "ScheduleAutoMerge", but it's not right:
67+
// If the transaction rolls back, then the pull request is not scheduled to auto merge.
68+
// So we should only set "scheduled" to true if there is no error.
69+
scheduled = err == nil
70+
if scheduled {
71+
log.Trace("Pull request [%d] scheduled for auto merge with style [%s] and message [%s]", pull.ID, style, message)
72+
automergequeue.StartPRCheckAndAutoMerge(ctx, pull)
73+
}
6874
return scheduled, err
6975
}
7076

tests/integration/pull_merge_test.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"code.gitea.io/gitea/modules/test"
3636
"code.gitea.io/gitea/modules/translation"
3737
"code.gitea.io/gitea/services/automerge"
38+
"code.gitea.io/gitea/services/automergequeue"
3839
pull_service "code.gitea.io/gitea/services/pull"
3940
repo_service "code.gitea.io/gitea/services/repository"
4041
commitstatus_service "code.gitea.io/gitea/services/repository/commitstatus"
@@ -727,7 +728,7 @@ func TestPullAutoMergeAfterCommitStatusSucceed(t *testing.T) {
727728

728729
// add protected branch for commit status
729730
csrf := GetUserCSRFToken(t, session)
730-
// Change master branch to protected
731+
// Change the "master" branch to "protected"
731732
req := NewRequestWithValues(t, "POST", "/user2/repo1/settings/branches/edit", map[string]string{
732733
"_csrf": csrf,
733734
"rule_name": "master",
@@ -737,10 +738,22 @@ func TestPullAutoMergeAfterCommitStatusSucceed(t *testing.T) {
737738
})
738739
session.MakeRequest(t, req, http.StatusSeeOther)
739740

741+
oldAutoMergeAddToQueue := automergequeue.AddToQueue
742+
addToQueueShaChan := make(chan string, 1)
743+
automergequeue.AddToQueue = func(pr *issues_model.PullRequest, sha string) {
744+
addToQueueShaChan <- sha
745+
}
740746
// first time insert automerge record, return true
741747
scheduled, err := automerge.ScheduleAutoMerge(db.DefaultContext, user1, pr, repo_model.MergeStyleMerge, "auto merge test", false)
742748
assert.NoError(t, err)
743749
assert.True(t, scheduled)
750+
// and the pr should be added to automergequeue, in case it is already "mergeable"
751+
select {
752+
case <-addToQueueShaChan:
753+
case <-time.After(time.Second):
754+
assert.FailNow(t, "Timeout: nothing was added to automergequeue")
755+
}
756+
automergequeue.AddToQueue = oldAutoMergeAddToQueue
744757

745758
// second time insert automerge record, return false because it does exist
746759
scheduled, err = automerge.ScheduleAutoMerge(db.DefaultContext, user1, pr, repo_model.MergeStyleMerge, "auto merge test", false)
@@ -775,13 +788,11 @@ func TestPullAutoMergeAfterCommitStatusSucceed(t *testing.T) {
775788
})
776789
assert.NoError(t, err)
777790

778-
time.Sleep(2 * time.Second)
779-
780-
// realod pr again
781-
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: pr.ID})
782-
assert.True(t, pr.HasMerged)
791+
assert.Eventually(t, func() bool {
792+
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: pr.ID})
793+
return pr.HasMerged
794+
}, 2*time.Second, 100*time.Millisecond)
783795
assert.NotEmpty(t, pr.MergedCommitID)
784-
785796
unittest.AssertNotExistsBean(t, &pull_model.AutoMerge{PullID: pr.ID})
786797
})
787798
}

0 commit comments

Comments
 (0)