forked from Shiloh/githaven
d68a613ba8
Currently only SHA1 repositories are supported by Gitea. This adds support for alternate SHA256 with the additional aim of easier support for additional hash types in the future. Fixes: #13794 Limited by: https://github.com/go-git/go-git/issues/899 Depend on: #28138 <img width="776" alt="图片" src="https://github.com/go-gitea/gitea/assets/81045/5448c9a7-608e-4341-a149-5dd0069c9447"> --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: 6543 <6543@obermui.de>
63 lines
1.4 KiB
Go
63 lines
1.4 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"`
|
|
}
|
|
|
|
// Prepare and load the testing database
|
|
return base.PrepareTestEnv(t, 0, new(Repository))
|
|
}
|
|
|
|
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)
|
|
}
|