You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pull_test.go 4.1KB

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