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.

release_test.go 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. // Copyright 2018 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package release
  5. import (
  6. "path/filepath"
  7. "testing"
  8. "code.gitea.io/gitea/models"
  9. "code.gitea.io/gitea/modules/git"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestMain(m *testing.M) {
  13. models.MainTest(m, filepath.Join("..", ".."))
  14. }
  15. func TestRelease_Create(t *testing.T) {
  16. assert.NoError(t, models.PrepareTestDatabase())
  17. user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
  18. repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
  19. repoPath := models.RepoPath(user.Name, repo.Name)
  20. gitRepo, err := git.OpenRepository(repoPath)
  21. assert.NoError(t, err)
  22. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  23. RepoID: repo.ID,
  24. PublisherID: user.ID,
  25. TagName: "v0.1",
  26. Target: "master",
  27. Title: "v0.1 is released",
  28. Note: "v0.1 is released",
  29. IsDraft: false,
  30. IsPrerelease: false,
  31. IsTag: false,
  32. }, nil))
  33. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  34. RepoID: repo.ID,
  35. PublisherID: user.ID,
  36. TagName: "v0.1.1",
  37. Target: "65f1bf27bc3bf70f64657658635e66094edbcb4d",
  38. Title: "v0.1.1 is released",
  39. Note: "v0.1.1 is released",
  40. IsDraft: false,
  41. IsPrerelease: false,
  42. IsTag: false,
  43. }, nil))
  44. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  45. RepoID: repo.ID,
  46. PublisherID: user.ID,
  47. TagName: "v0.1.2",
  48. Target: "65f1bf2",
  49. Title: "v0.1.2 is released",
  50. Note: "v0.1.2 is released",
  51. IsDraft: false,
  52. IsPrerelease: false,
  53. IsTag: false,
  54. }, nil))
  55. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  56. RepoID: repo.ID,
  57. PublisherID: user.ID,
  58. TagName: "v0.1.3",
  59. Target: "65f1bf2",
  60. Title: "v0.1.3 is released",
  61. Note: "v0.1.3 is released",
  62. IsDraft: true,
  63. IsPrerelease: false,
  64. IsTag: false,
  65. }, nil))
  66. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  67. RepoID: repo.ID,
  68. PublisherID: user.ID,
  69. TagName: "v0.1.4",
  70. Target: "65f1bf2",
  71. Title: "v0.1.4 is released",
  72. Note: "v0.1.4 is released",
  73. IsDraft: false,
  74. IsPrerelease: true,
  75. IsTag: false,
  76. }, nil))
  77. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  78. RepoID: repo.ID,
  79. PublisherID: user.ID,
  80. TagName: "v0.1.5",
  81. Target: "65f1bf2",
  82. Title: "v0.1.5 is released",
  83. Note: "v0.1.5 is released",
  84. IsDraft: false,
  85. IsPrerelease: false,
  86. IsTag: true,
  87. }, nil))
  88. }
  89. func TestRelease_MirrorDelete(t *testing.T) {
  90. assert.NoError(t, models.PrepareTestDatabase())
  91. user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
  92. repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
  93. repoPath := models.RepoPath(user.Name, repo.Name)
  94. migrationOptions := models.MigrateRepoOptions{
  95. Name: "test_mirror",
  96. Description: "Test mirror",
  97. IsPrivate: false,
  98. IsMirror: true,
  99. RemoteAddr: repoPath,
  100. Wiki: true,
  101. SyncReleasesWithTags: true,
  102. }
  103. mirror, err := models.MigrateRepository(user, user, migrationOptions)
  104. assert.NoError(t, err)
  105. gitRepo, err := git.OpenRepository(repoPath)
  106. assert.NoError(t, err)
  107. findOptions := models.FindReleasesOptions{IncludeDrafts: true, IncludeTags: true}
  108. initCount, err := models.GetReleaseCountByRepoID(mirror.ID, findOptions)
  109. assert.NoError(t, err)
  110. assert.NoError(t, CreateRelease(gitRepo, &models.Release{
  111. RepoID: repo.ID,
  112. PublisherID: user.ID,
  113. TagName: "v0.2",
  114. Target: "master",
  115. Title: "v0.2 is released",
  116. Note: "v0.2 is released",
  117. IsDraft: false,
  118. IsPrerelease: false,
  119. IsTag: true,
  120. }, nil))
  121. err = mirror.GetMirror()
  122. assert.NoError(t, err)
  123. ok := models.RunMirrorSync(mirror.Mirror)
  124. assert.True(t, ok)
  125. count, err := models.GetReleaseCountByRepoID(mirror.ID, findOptions)
  126. assert.NoError(t, err)
  127. assert.EqualValues(t, initCount+1, count)
  128. release, err := models.GetRelease(repo.ID, "v0.2")
  129. assert.NoError(t, err)
  130. assert.NoError(t, DeleteReleaseByID(release.ID, user, true))
  131. ok = models.RunMirrorSync(mirror.Mirror)
  132. assert.True(t, ok)
  133. count, err = models.GetReleaseCountByRepoID(mirror.ID, findOptions)
  134. assert.NoError(t, err)
  135. assert.EqualValues(t, initCount, count)
  136. }