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  }