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.

v286_test.go 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package v1_22 //nolint
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/migrations/base"
  7. "github.com/stretchr/testify/assert"
  8. "xorm.io/xorm"
  9. )
  10. func PrepareOldRepository(t *testing.T) (*xorm.Engine, func()) {
  11. type Repository struct { // old struct
  12. ID int64 `xorm:"pk autoincr"`
  13. }
  14. type CommitStatus struct {
  15. ID int64
  16. ContextHash string
  17. }
  18. type RepoArchiver struct {
  19. ID int64
  20. RepoID int64
  21. Type int
  22. CommitID string
  23. }
  24. type ReviewState struct {
  25. ID int64
  26. CommitSHA string
  27. UserID int64
  28. PullID int64
  29. }
  30. type Comment struct {
  31. ID int64
  32. CommitSHA string
  33. }
  34. type PullRequest struct {
  35. ID int64
  36. CommitSHA string
  37. MergeBase string
  38. MergedCommitID string
  39. }
  40. type Release struct {
  41. ID int64
  42. Sha1 string
  43. }
  44. type RepoIndexerStatus struct {
  45. ID int64
  46. CommitSHA string
  47. }
  48. type Review struct {
  49. ID int64
  50. CommitID string
  51. }
  52. // Prepare and load the testing database
  53. return base.PrepareTestEnv(t, 0,
  54. new(Repository),
  55. new(CommitStatus),
  56. new(RepoArchiver),
  57. new(ReviewState),
  58. new(Review),
  59. new(Comment),
  60. new(PullRequest),
  61. new(Release),
  62. new(RepoIndexerStatus),
  63. )
  64. }
  65. func Test_RepositoryFormat(t *testing.T) {
  66. x, deferable := PrepareOldRepository(t)
  67. defer deferable()
  68. assert.NoError(t, AdjustDBForSha256(x))
  69. type Repository struct {
  70. ID int64 `xorm:"pk autoincr"`
  71. ObjectFormatName string `xorg:"not null default('sha1')"`
  72. }
  73. repo := new(Repository)
  74. // check we have some records to migrate
  75. count, err := x.Count(new(Repository))
  76. assert.NoError(t, err)
  77. assert.EqualValues(t, 4, count)
  78. repo.ObjectFormatName = "sha256"
  79. _, err = x.Insert(repo)
  80. assert.NoError(t, err)
  81. id := repo.ID
  82. count, err = x.Count(new(Repository))
  83. assert.NoError(t, err)
  84. assert.EqualValues(t, 5, count)
  85. repo = new(Repository)
  86. ok, err := x.ID(2).Get(repo)
  87. assert.NoError(t, err)
  88. assert.EqualValues(t, true, ok)
  89. assert.EqualValues(t, "sha1", repo.ObjectFormatName)
  90. repo = new(Repository)
  91. ok, err = x.ID(id).Get(repo)
  92. assert.NoError(t, err)
  93. assert.EqualValues(t, true, ok)
  94. assert.EqualValues(t, "sha256", repo.ObjectFormatName)
  95. }