Forgejo/services/forgejo/sanity_v1TOv5_0_1Included_test.go
Earl Warren 18fd949916
[UPGRADE] add sanity checks for [storage*]
Refs: https://forgejo.org/2023-08-release-v1-20-3-0/
(cherry picked from commit a266dd0ce3)
(cherry picked from commit b9eb5eccd8)
(cherry picked from commit 7fc2028ede)
(cherry picked from commit 0c988e6120)
(cherry picked from commit 7ba05e8c2b)
(cherry picked from commit 2ed5068abe)
(cherry picked from commit 353913a26d)
(cherry picked from commit 4e63a01a8b)
(cherry picked from commit 99f612aed3)
(cherry picked from commit b4fe189cae)
(cherry picked from commit 520295a6f5)
(cherry picked from commit e5a564044b)
(cherry picked from commit 52cc6c26fc)
(cherry picked from commit d58f04bd1d)
(cherry picked from commit 1b7213a98b)
2023-11-13 12:33:49 +01:00

116 lines
2.7 KiB
Go

// SPDX-License-Identifier: MIT
package forgejo
import (
"fmt"
"testing"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/forgejo/semver"
"code.gitea.io/gitea/models/unittest"
"code.gitea.io/gitea/modules/log"
"github.com/stretchr/testify/assert"
)
func TestForgejo_v1TOv5_0_1Included(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
logFatal = func(string, ...any) {}
defer func() {
logFatal = log.Fatal
}()
configWithSoragePath := `
[storage]
PATH = /something
`
verifyForgejoV1TOv5_0_1Included(t, configWithSoragePath, "[storage].PATH is set")
for _, c := range v1TOv5_0_1IncludedStorageSections {
config := fmt.Sprintf("[%s]\n[%s]\n", c.section, c.storageSection)
verifyForgejoV1TOv5_0_1Included(t, config, fmt.Sprintf("[%s] and [%s]", c.section, c.storageSection))
}
}
func verifyForgejoV1TOv5_0_1Included(t *testing.T, config, message string) {
ctx := db.DefaultContext
e := db.GetEngine(ctx)
for _, testCase := range []struct {
name string
dbVersion int64
semver string
config string
}{
{
name: "5.0.0 with no " + message,
dbVersion: ForgejoV5DatabaseVersion,
semver: "5.0.0+0-gitea-1.20.1",
config: "",
},
{
name: "5.0.1 with no " + message,
dbVersion: ForgejoV5DatabaseVersion,
semver: "5.0.1+0-gitea-1.20.2",
config: "",
},
{
name: "5.0.2 with " + message,
dbVersion: ForgejoV5DatabaseVersion,
semver: "5.0.2+0-gitea-1.20.3",
config: config,
},
{
name: "6.0.0 with " + message,
dbVersion: ForgejoV6DatabaseVersion,
semver: "6.0.0+0-gitea-1.21.0",
config: config,
},
} {
cfg := configFixture(t, testCase.config)
semver.SetVersionString(ctx, testCase.semver)
assert.NoError(t, v1TOv5_0_1Included(e, testCase.dbVersion, cfg))
}
for _, testCase := range []struct {
name string
dbVersion int64
semver string
config string
}{
{
name: "5.0.0 with " + message,
dbVersion: ForgejoV5DatabaseVersion,
semver: "5.0.0+0-gitea-1.20.1",
config: config,
},
{
name: "5.0.1 with " + message,
dbVersion: ForgejoV5DatabaseVersion,
semver: "5.0.1+0-gitea-1.20.2",
config: config,
},
{
//
// When upgrading from
//
// Forgejo >= 5.0.1+0-gitea-1.20.2
// Gitea > v1.21
//
// The version that the server was running prior to the upgrade
// is not available.
//
name: semver.DefaultVersionString + " with " + message,
dbVersion: ForgejoV4DatabaseVersion,
semver: semver.DefaultVersionString,
config: config,
},
} {
cfg := configFixture(t, testCase.config)
semver.SetVersionString(ctx, testCase.semver)
assert.ErrorContains(t, v1TOv5_0_1Included(e, testCase.dbVersion, cfg), message)
}
}