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