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.1KB

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