gitea源码

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