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]>
122 lines
3.7 KiB
Go
122 lines
3.7 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package unittest_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/hanzoai/git/models/unittest"
|
|
user_model "github.com/hanzoai/git/models/user"
|
|
"github.com/hanzoai/git/modules/setting"
|
|
|
|
"github.com/hanzoai/xorm"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var NewFixturesLoaderVendor = func(e *xorm.Engine, opts unittest.FixturesOptions) (unittest.FixturesLoader, error) {
|
|
return nil, nil //nolint:nilnil // no vendor fixtures loader configured
|
|
}
|
|
|
|
/*
|
|
// the old code is kept here in case we are still interested in benchmarking the two implementations
|
|
func init() {
|
|
NewFixturesLoaderVendor = func(e *xorm.Engine, opts unittest.FixturesOptions) (unittest.FixturesLoader, error) {
|
|
return NewFixturesLoaderVendorGoTestfixtures(e, opts)
|
|
}
|
|
}
|
|
|
|
func NewFixturesLoaderVendorGoTestfixtures(e *xorm.Engine, opts unittest.FixturesOptions) (*testfixtures.Loader, error) {
|
|
files, err := unittest.FixturesFileFullPaths(opts.Dir, opts.Files)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to get fixtures files: %w", err)
|
|
}
|
|
var dialect string
|
|
switch e.Dialect().URI().DBType {
|
|
case schemas.POSTGRES:
|
|
dialect = "postgres"
|
|
case schemas.MYSQL:
|
|
dialect = "mysql"
|
|
case schemas.MSSQL:
|
|
dialect = "mssql"
|
|
case schemas.SQLITE:
|
|
dialect = "sqlite3"
|
|
default:
|
|
return nil, fmt.Errorf("unsupported RDBMS for integration tests: %q", e.Dialect().URI().DBType)
|
|
}
|
|
loaderOptions := []func(loader *testfixtures.Loader) error{
|
|
testfixtures.Database(e.DB().DB),
|
|
testfixtures.Dialect(dialect),
|
|
testfixtures.DangerousSkipTestDatabaseCheck(),
|
|
testfixtures.Files(files...),
|
|
}
|
|
if e.Dialect().URI().DBType == schemas.POSTGRES {
|
|
loaderOptions = append(loaderOptions, testfixtures.SkipResetSequences())
|
|
}
|
|
return testfixtures.New(loaderOptions...)
|
|
}
|
|
*/
|
|
|
|
func TestMain(m *testing.M) {
|
|
setting.SetupGitTestEnv()
|
|
os.Exit(m.Run())
|
|
}
|
|
|
|
func prepareTestFixturesLoaders(t testing.TB) unittest.FixturesOptions {
|
|
_ = user_model.User{}
|
|
gitRoot := setting.GetGitTestSourceRoot()
|
|
opts := unittest.FixturesOptions{Dir: filepath.Join(gitRoot, "models", "fixtures"), Files: []string{
|
|
"user.yml",
|
|
}}
|
|
require.NoError(t, unittest.CreateTestEngine(filepath.Join(t.TempDir(), "sqlite-test.db"), opts))
|
|
return opts
|
|
}
|
|
|
|
func TestFixturesLoader(t *testing.T) {
|
|
opts := prepareTestFixturesLoaders(t)
|
|
loaderInternal, err := unittest.NewFixturesLoader(unittest.GetXORMEngine(), opts)
|
|
require.NoError(t, err)
|
|
loaderVendor, err := NewFixturesLoaderVendor(unittest.GetXORMEngine(), opts)
|
|
require.NoError(t, err)
|
|
t.Run("Internal", func(t *testing.T) {
|
|
require.NoError(t, loaderInternal.Load())
|
|
require.NoError(t, loaderInternal.Load())
|
|
})
|
|
t.Run("Vendor", func(t *testing.T) {
|
|
if loaderVendor == nil {
|
|
t.Skip()
|
|
}
|
|
require.NoError(t, loaderVendor.Load())
|
|
require.NoError(t, loaderVendor.Load())
|
|
})
|
|
}
|
|
|
|
func BenchmarkFixturesLoader(b *testing.B) {
|
|
opts := prepareTestFixturesLoaders(b)
|
|
require.NoError(b, unittest.CreateTestEngine(filepath.Join(b.TempDir(), "sqlite-test.db"), opts))
|
|
loaderInternal, err := unittest.NewFixturesLoader(unittest.GetXORMEngine(), opts)
|
|
require.NoError(b, err)
|
|
loaderVendor, err := NewFixturesLoaderVendor(unittest.GetXORMEngine(), opts)
|
|
require.NoError(b, err)
|
|
|
|
// BenchmarkFixturesLoader/Vendor
|
|
// BenchmarkFixturesLoader/Vendor-12 1696 719416 ns/op
|
|
// BenchmarkFixturesLoader/Internal
|
|
// BenchmarkFixturesLoader/Internal-12 1746 670457 ns/op
|
|
b.Run("Internal", func(b *testing.B) {
|
|
for b.Loop() {
|
|
require.NoError(b, loaderInternal.Load())
|
|
}
|
|
})
|
|
b.Run("Vendor", func(b *testing.B) {
|
|
if loaderVendor == nil {
|
|
b.Skip()
|
|
}
|
|
for b.Loop() {
|
|
require.NoError(b, loaderVendor.Load())
|
|
}
|
|
})
|
|
}
|