2019-12-14 20:28:51 -07:00
// Copyright 2019 The Gitea Authors.
// All rights reserved.
2022-11-27 11:20:29 -07:00
// SPDX-License-Identifier: MIT
2019-12-14 20:28:51 -07:00
package pull
2021-06-25 11:01:43 -06:00
import (
"testing"
2022-11-19 01:12:33 -07:00
"code.gitea.io/gitea/models/db"
2022-06-13 03:37:59 -06:00
issues_model "code.gitea.io/gitea/models/issues"
2022-05-08 06:32:45 -06:00
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
"code.gitea.io/gitea/models/unittest"
"code.gitea.io/gitea/modules/git"
2021-06-25 11:01:43 -06:00
"github.com/stretchr/testify/assert"
)
2019-12-14 20:28:51 -07:00
// TODO TestPullRequest_PushToBaseRepo
2021-06-25 11:01:43 -06:00
func TestPullRequest_CommitMessageTrailersPattern ( t * testing . T ) {
// Not a valid trailer section
assert . False ( t , commitMessageTrailersPattern . MatchString ( "" ) )
assert . False ( t , commitMessageTrailersPattern . MatchString ( "No trailer." ) )
assert . False ( t , commitMessageTrailersPattern . MatchString ( "Signed-off-by: Bob <bob@example.com>\nNot a trailer due to following text." ) )
assert . False ( t , commitMessageTrailersPattern . MatchString ( "Message body not correctly separated from trailer section by empty line.\nSigned-off-by: Bob <bob@example.com>" ) )
// Valid trailer section
assert . True ( t , commitMessageTrailersPattern . MatchString ( "Signed-off-by: Bob <bob@example.com>" ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( "Signed-off-by: Bob <bob@example.com>\nOther-Trailer: Value" ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( "Message body correctly separated from trailer section by empty line.\n\nSigned-off-by: Bob <bob@example.com>" ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( " Multiple trailers . \ n \ nSigned - off - by : Bob < bob @ example . com > \ nOther - Trailer : Value " ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( "Newline after trailer section.\n\nSigned-off-by: Bob <bob@example.com>\n" ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( "No space after colon is accepted.\n\nSigned-off-by:Bob <bob@example.com>" ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( "Additional whitespace is accepted.\n\nSigned-off-by \t : \tBob <bob@example.com> " ) )
assert . True ( t , commitMessageTrailersPattern . MatchString ( "Folded value.\n\nFolded-trailer: This is\n a folded\n trailer value\nOther-Trailer: Value" ) )
}
2022-05-08 06:32:45 -06:00
func TestPullRequest_GetDefaultMergeMessage_InternalTracker ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-08-15 20:22:25 -06:00
pr := unittest . AssertExistsAndLoadBean ( t , & issues_model . PullRequest { ID : 2 } )
2022-05-08 06:32:45 -06:00
2022-11-19 01:12:33 -07:00
assert . NoError ( t , pr . LoadBaseRepo ( db . DefaultContext ) )
2022-05-08 06:32:45 -06:00
gitRepo , err := git . OpenRepository ( git . DefaultContext , pr . BaseRepo . RepoPath ( ) )
assert . NoError ( t , err )
defer gitRepo . Close ( )
2022-12-29 05:40:20 -07:00
mergeMessage , _ , err := GetDefaultMergeMessage ( db . DefaultContext , gitRepo , pr , "" )
2022-05-08 06:32:45 -06:00
assert . NoError ( t , err )
assert . Equal ( t , "Merge pull request 'issue3' (#3) from branch2 into master" , mergeMessage )
pr . BaseRepoID = 1
pr . HeadRepoID = 2
2022-12-29 05:40:20 -07:00
mergeMessage , _ , err = GetDefaultMergeMessage ( db . DefaultContext , gitRepo , pr , "" )
2022-05-08 06:32:45 -06:00
assert . NoError ( t , err )
assert . Equal ( t , "Merge pull request 'issue3' (#3) from user2/repo1:branch2 into master" , mergeMessage )
}
func TestPullRequest_GetDefaultMergeMessage_ExternalTracker ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
externalTracker := repo_model . RepoUnit {
Type : unit . TypeExternalTracker ,
Config : & repo_model . ExternalTrackerConfig {
ExternalTrackerFormat : "https://someurl.com/{user}/{repo}/{issue}" ,
} ,
}
2022-08-15 20:22:25 -06:00
baseRepo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } )
2022-05-08 06:32:45 -06:00
baseRepo . Units = [ ] * repo_model . RepoUnit { & externalTracker }
2022-08-15 20:22:25 -06:00
pr := unittest . AssertExistsAndLoadBean ( t , & issues_model . PullRequest { ID : 2 , BaseRepo : baseRepo } )
2022-05-08 06:32:45 -06:00
2022-11-19 01:12:33 -07:00
assert . NoError ( t , pr . LoadBaseRepo ( db . DefaultContext ) )
2022-05-08 06:32:45 -06:00
gitRepo , err := git . OpenRepository ( git . DefaultContext , pr . BaseRepo . RepoPath ( ) )
assert . NoError ( t , err )
defer gitRepo . Close ( )
2022-12-29 05:40:20 -07:00
mergeMessage , _ , err := GetDefaultMergeMessage ( db . DefaultContext , gitRepo , pr , "" )
2022-05-08 06:32:45 -06:00
assert . NoError ( t , err )
assert . Equal ( t , "Merge pull request 'issue3' (!3) from branch2 into master" , mergeMessage )
pr . BaseRepoID = 1
pr . HeadRepoID = 2
pr . BaseRepo = nil
pr . HeadRepo = nil
2022-12-29 05:40:20 -07:00
mergeMessage , _ , err = GetDefaultMergeMessage ( db . DefaultContext , gitRepo , pr , "" )
2022-05-08 06:32:45 -06:00
assert . NoError ( t , err )
assert . Equal ( t , "Merge pull request 'issue3' (#3) from user2/repo2:branch2 into master" , mergeMessage )
}