mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in NOTICE, alongside LICENSE. The header lint accepts any copyright line above the SPDX line, so it no longer demands an upstream one. Co-authored-by: Hanzo Dev <[email protected]>
119 lines
2.5 KiB
Go
119 lines
2.5 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package v1_22
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/hanzoai/git/models/db"
|
|
"github.com/hanzoai/git/models/migrations/migrationtest"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func PrepareOldRepository(t *testing.T) (db.EngineMigration, func()) {
|
|
type Repository struct { // old struct
|
|
ID int64 `xorm:"pk autoincr"`
|
|
}
|
|
|
|
type CommitStatus struct {
|
|
ID int64
|
|
ContextHash string `xorm:"char(40) index"`
|
|
}
|
|
|
|
type RepoArchiver struct {
|
|
ID int64
|
|
RepoID int64 `xorm:"index unique(s)"`
|
|
Type int `xorm:"unique(s)"`
|
|
CommitID string `xorm:"VARCHAR(40) unique(s)"`
|
|
}
|
|
|
|
type ReviewState struct {
|
|
ID int64
|
|
UserID int64 `xorm:"NOT NULL UNIQUE(pull_commit_user)"`
|
|
PullID int64 `xorm:"NOT NULL INDEX UNIQUE(pull_commit_user) DEFAULT 0"`
|
|
CommitSHA string `xorm:"NOT NULL VARCHAR(40) UNIQUE(pull_commit_user)"`
|
|
}
|
|
|
|
type Comment struct {
|
|
ID int64
|
|
CommitSHA string
|
|
}
|
|
|
|
type PullRequest struct {
|
|
ID int64
|
|
CommitSHA string
|
|
MergeBase string
|
|
MergedCommitID string
|
|
}
|
|
|
|
type Release struct {
|
|
ID int64
|
|
Sha1 string
|
|
}
|
|
|
|
type RepoIndexerStatus struct {
|
|
ID int64
|
|
CommitSHA string
|
|
}
|
|
|
|
type Review struct {
|
|
ID int64
|
|
CommitID string
|
|
}
|
|
|
|
// Prepare and load the testing database
|
|
return migrationtest.PrepareTestEnv(t, 0,
|
|
new(Repository),
|
|
new(CommitStatus),
|
|
new(RepoArchiver),
|
|
new(ReviewState),
|
|
new(Review),
|
|
new(Comment),
|
|
new(PullRequest),
|
|
new(Release),
|
|
new(RepoIndexerStatus),
|
|
)
|
|
}
|
|
|
|
func Test_RepositoryFormat(t *testing.T) {
|
|
x, deferable := PrepareOldRepository(t)
|
|
defer deferable()
|
|
|
|
assert.NoError(t, AdjustDBForSha256(x))
|
|
|
|
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)
|
|
|
|
repo.ObjectFormatName = "sha256"
|
|
_, err = x.Insert(repo)
|
|
assert.NoError(t, err)
|
|
id := repo.ID
|
|
|
|
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.True(t, ok)
|
|
assert.Equal(t, "sha1", repo.ObjectFormatName)
|
|
|
|
repo = new(Repository)
|
|
ok, err = x.ID(id).Get(repo)
|
|
assert.NoError(t, err)
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "sha256", repo.ObjectFormatName)
|
|
}
|