aboutsummaryrefslogtreecommitdiffstats
path: root/services/pull/check_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/pull/check_test.go')
-rw-r--r--services/pull/check_test.go52
1 files changed, 49 insertions, 3 deletions
diff --git a/services/pull/check_test.go b/services/pull/check_test.go
index fa3a676ef1..eb66615dcf 100644
--- a/services/pull/check_test.go
+++ b/services/pull/check_test.go
@@ -1,5 +1,4 @@
-// Copyright 2019 The Gitea Authors.
-// All rights reserved.
+// Copyright 2019 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package pull
@@ -11,11 +10,18 @@ import (
"code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues"
+ "code.gitea.io/gitea/models/pull"
+ repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unittest"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/queue"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/test"
+ "code.gitea.io/gitea/services/automergequeue"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestPullRequest_AddToTaskQueue(t *testing.T) {
@@ -63,6 +69,46 @@ func TestPullRequest_AddToTaskQueue(t *testing.T) {
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
assert.Equal(t, issues_model.PullRequestStatusChecking, pr.Status)
- prPatchCheckerQueue.ShutdownWait(5 * time.Second)
+ prPatchCheckerQueue.ShutdownWait(time.Second)
prPatchCheckerQueue = nil
}
+
+func TestMarkPullRequestAsMergeable(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ prPatchCheckerQueue = queue.CreateUniqueQueue(graceful.GetManager().ShutdownContext(), "pr_patch_checker", func(items ...string) []string { return nil })
+ go prPatchCheckerQueue.Run()
+ defer func() {
+ prPatchCheckerQueue.ShutdownWait(time.Second)
+ prPatchCheckerQueue = nil
+ }()
+
+ addToQueueShaChan := make(chan string, 1)
+ defer test.MockVariableValue(&automergequeue.AddToQueue, func(pr *issues_model.PullRequest, sha string) {
+ addToQueueShaChan <- sha
+ })()
+ ctx := t.Context()
+ _, _ = db.GetEngine(ctx).ID(2).Update(&issues_model.PullRequest{Status: issues_model.PullRequestStatusChecking})
+ pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
+ require.False(t, pr.HasMerged)
+ require.Equal(t, issues_model.PullRequestStatusChecking, pr.Status)
+
+ err := pull.ScheduleAutoMerge(ctx, &user_model.User{ID: 99999}, pr.ID, repo_model.MergeStyleMerge, "test msg", true)
+ require.NoError(t, err)
+
+ exist, scheduleMerge, err := pull.GetScheduledMergeByPullID(ctx, pr.ID)
+ require.NoError(t, err)
+ assert.True(t, exist)
+ assert.True(t, scheduleMerge.Doer.IsGhost())
+
+ markPullRequestAsMergeable(ctx, pr)
+ pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
+ require.Equal(t, issues_model.PullRequestStatusMergeable, pr.Status)
+
+ select {
+ case sha := <-addToQueueShaChan:
+ assert.Equal(t, "985f0301dba5e7b34be866819cd15ad3d8f508ee", sha) // ref: refs/pull/3/head
+ case <-time.After(1 * time.Second):
+ assert.FailNow(t, "Timeout: nothing was added to automergequeue")
+ }
+}