mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-09-12 18:03:57 +02:00
- This also means that if one of the test fails, it will actually propagate to make and subsequently fail the test. - Remove the 'delete duplicates issue users' code, I checked this against my local development database (which contains quite bizarre cases, even some that Forgejo does not like), my local instance database and against Codeberg production and they all yielded no results to this query, so I'm removing it thus resolving the error that the delete code was not compatible with Mysql. - Sync all tables that are requires by the migration in the test. - Resolves #2206 (cherry picked from commit8e02be7e89
) (cherry picked from commit006f064416
)
105 lines
2.7 KiB
Go
105 lines
2.7 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package v1_22 //nolint
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"code.gitea.io/gitea/models/migrations/base"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"xorm.io/xorm"
|
|
)
|
|
|
|
func PrepareOldRepository(t *testing.T) (*xorm.Engine, func()) {
|
|
type Repository struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
ObjectFormatName string `xorm:"VARCHAR(6) NOT NULL DEFAULT 'sha1'"`
|
|
}
|
|
|
|
type CommitStatus struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
ContextHash string `xorm:"char(40)"`
|
|
}
|
|
|
|
type Comment struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
CommitSHA string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
type PullRequest struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
MergeBase string `xorm:"VARCHAR(40)"`
|
|
MergedCommitID string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
type Review struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
CommitID string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
type ReviewState struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
CommitSHA string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
type RepoArchiver struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
CommitID string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
type Release struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
Sha1 string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
type RepoIndexerStatus struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
CommitSha string `xorm:"VARCHAR(40)"`
|
|
}
|
|
|
|
// Prepare and load the testing database
|
|
return base.PrepareTestEnv(t, 0, new(Repository), new(CommitStatus), new(Comment), new(PullRequest), new(Review), new(ReviewState), new(RepoArchiver), new(Release), new(RepoIndexerStatus))
|
|
}
|
|
|
|
func Test_RepositoryFormat(t *testing.T) {
|
|
x, deferable := PrepareOldRepository(t)
|
|
defer deferable()
|
|
|
|
type Repository struct {
|
|
ID int64 `xorm:"pk autoincr"`
|
|
ObjectFormatName string `xorg:"not null default('sha1')"`
|
|
}
|
|
|
|
repo := new(Repository)
|
|
|
|
// check we have some records to migrate
|
|
count, err := x.Count(new(Repository))
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 4, count)
|
|
|
|
assert.NoError(t, AdjustDBForSha256(x))
|
|
|
|
repo.ID = 20
|
|
repo.ObjectFormatName = "sha256"
|
|
_, err = x.Insert(repo)
|
|
assert.NoError(t, err)
|
|
|
|
count, err = x.Count(new(Repository))
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 5, count)
|
|
|
|
repo = new(Repository)
|
|
ok, err := x.ID(2).Get(repo)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, true, ok)
|
|
assert.EqualValues(t, "sha1", repo.ObjectFormatName)
|
|
|
|
repo = new(Repository)
|
|
ok, err = x.ID(20).Get(repo)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, true, ok)
|
|
assert.EqualValues(t, "sha256", repo.ObjectFormatName)
|
|
}
|