code.gitea.io/gitea@v1.22.3/services/pull/pull_test.go (about) 1 // Copyright 2019 The Gitea Authors. 2 // All rights reserved. 3 // SPDX-License-Identifier: MIT 4 5 package pull 6 7 import ( 8 "testing" 9 10 "code.gitea.io/gitea/models/db" 11 issues_model "code.gitea.io/gitea/models/issues" 12 repo_model "code.gitea.io/gitea/models/repo" 13 "code.gitea.io/gitea/models/unit" 14 "code.gitea.io/gitea/models/unittest" 15 "code.gitea.io/gitea/modules/git" 16 "code.gitea.io/gitea/modules/gitrepo" 17 18 "github.com/stretchr/testify/assert" 19 ) 20 21 // TODO TestPullRequest_PushToBaseRepo 22 23 func TestPullRequest_CommitMessageTrailersPattern(t *testing.T) { 24 // Not a valid trailer section 25 assert.False(t, commitMessageTrailersPattern.MatchString("")) 26 assert.False(t, commitMessageTrailersPattern.MatchString("No trailer.")) 27 assert.False(t, commitMessageTrailersPattern.MatchString("Signed-off-by: Bob <bob@example.com>\nNot a trailer due to following text.")) 28 assert.False(t, commitMessageTrailersPattern.MatchString("Message body not correctly separated from trailer section by empty line.\nSigned-off-by: Bob <bob@example.com>")) 29 // Valid trailer section 30 assert.True(t, commitMessageTrailersPattern.MatchString("Signed-off-by: Bob <bob@example.com>")) 31 assert.True(t, commitMessageTrailersPattern.MatchString("Signed-off-by: Bob <bob@example.com>\nOther-Trailer: Value")) 32 assert.True(t, commitMessageTrailersPattern.MatchString("Message body correctly separated from trailer section by empty line.\n\nSigned-off-by: Bob <bob@example.com>")) 33 assert.True(t, commitMessageTrailersPattern.MatchString("Multiple trailers.\n\nSigned-off-by: Bob <bob@example.com>\nOther-Trailer: Value")) 34 assert.True(t, commitMessageTrailersPattern.MatchString("Newline after trailer section.\n\nSigned-off-by: Bob <bob@example.com>\n")) 35 assert.True(t, commitMessageTrailersPattern.MatchString("No space after colon is accepted.\n\nSigned-off-by:Bob <bob@example.com>")) 36 assert.True(t, commitMessageTrailersPattern.MatchString("Additional whitespace is accepted.\n\nSigned-off-by \t : \tBob <bob@example.com> ")) 37 assert.True(t, commitMessageTrailersPattern.MatchString("Folded value.\n\nFolded-trailer: This is\n a folded\n trailer value\nOther-Trailer: Value")) 38 } 39 40 func TestPullRequest_GetDefaultMergeMessage_InternalTracker(t *testing.T) { 41 assert.NoError(t, unittest.PrepareTestDatabase()) 42 pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2}) 43 44 assert.NoError(t, pr.LoadBaseRepo(db.DefaultContext)) 45 gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, pr.BaseRepo) 46 assert.NoError(t, err) 47 defer gitRepo.Close() 48 49 mergeMessage, _, err := GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") 50 assert.NoError(t, err) 51 assert.Equal(t, "Merge pull request 'issue3' (#3) from branch2 into master", mergeMessage) 52 53 pr.BaseRepoID = 1 54 pr.HeadRepoID = 2 55 mergeMessage, _, err = GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") 56 assert.NoError(t, err) 57 assert.Equal(t, "Merge pull request 'issue3' (#3) from user2/repo1:branch2 into master", mergeMessage) 58 } 59 60 func TestPullRequest_GetDefaultMergeMessage_ExternalTracker(t *testing.T) { 61 assert.NoError(t, unittest.PrepareTestDatabase()) 62 63 externalTracker := repo_model.RepoUnit{ 64 Type: unit.TypeExternalTracker, 65 Config: &repo_model.ExternalTrackerConfig{ 66 ExternalTrackerFormat: "https://someurl.com/{user}/{repo}/{issue}", 67 }, 68 } 69 baseRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) 70 baseRepo.Units = []*repo_model.RepoUnit{&externalTracker} 71 72 pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2, BaseRepo: baseRepo}) 73 74 assert.NoError(t, pr.LoadBaseRepo(db.DefaultContext)) 75 gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, pr.BaseRepo) 76 assert.NoError(t, err) 77 defer gitRepo.Close() 78 79 mergeMessage, _, err := GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") 80 assert.NoError(t, err) 81 82 assert.Equal(t, "Merge pull request 'issue3' (!3) from branch2 into master", mergeMessage) 83 84 pr.BaseRepoID = 1 85 pr.HeadRepoID = 2 86 pr.BaseRepo = nil 87 pr.HeadRepo = nil 88 mergeMessage, _, err = GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") 89 assert.NoError(t, err) 90 91 assert.Equal(t, "Merge pull request 'issue3' (#3) from user2/repo2:branch2 into master", mergeMessage) 92 }