Skip to content

Commit e7e1c57

Browse files
committed
Only load necessary fixtures when preparing unit tests envs
1 parent 02b271e commit e7e1c57

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

contrib/fixtures/fixture_generation.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ var (
3131
func main() {
3232
pathToGiteaRoot := "."
3333
fixturesDir = filepath.Join(pathToGiteaRoot, "models", "fixtures")
34-
if err := db.CreateTestEngine(fixturesDir); err != nil {
34+
if err := db.CreateTestEngine(db.FixturesOptions{
35+
Dir: fixturesDir,
36+
}); err != nil {
3537
fmt.Printf("CreateTestEngine: %+v", err)
3638
os.Exit(1)
3739
}

models/db/test_fixtures.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,18 @@ import (
1717
var fixtures *testfixtures.Loader
1818

1919
// InitFixtures initialize test fixtures for a test database
20-
func InitFixtures(dir string, engine ...*xorm.Engine) (err error) {
20+
func InitFixtures(opts FixturesOptions, engine ...*xorm.Engine) (err error) {
2121
e := x
2222
if len(engine) == 1 {
2323
e = engine[0]
2424
}
2525

26-
testfiles := testfixtures.Directory(dir)
26+
var testfiles func(*testfixtures.Loader) error
27+
if opts.Dir != "" {
28+
testfiles = testfixtures.Directory(opts.Dir)
29+
} else {
30+
testfiles = testfixtures.Files(opts.Files...)
31+
}
2732
dialect := "unknown"
2833
switch e.Dialect().URI().DBType {
2934
case schemas.POSTGRES:

models/db/unit_tests.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,21 @@ func fatalTestError(fmtStr string, args ...interface{}) {
4444

4545
// MainTest a reusable TestMain(..) function for unit tests that need to use a
4646
// test database. Creates the test database, and sets necessary settings.
47-
func MainTest(m *testing.M, pathToGiteaRoot string) {
47+
func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) {
4848
var err error
4949
giteaRoot = pathToGiteaRoot
5050
fixturesDir = filepath.Join(pathToGiteaRoot, "models", "fixtures")
51-
if err = CreateTestEngine(fixturesDir); err != nil {
51+
52+
var opts FixturesOptions
53+
if len(fixtureFiles) == 0 {
54+
opts.Dir = fixturesDir
55+
} else {
56+
for _, f := range fixtureFiles {
57+
opts.Files = append(opts.Files, filepath.Join(fixturesDir, f))
58+
}
59+
}
60+
61+
if err = CreateTestEngine(opts); err != nil {
5262
fatalTestError("Error creating test engine: %v\n", err)
5363
}
5464

@@ -102,8 +112,14 @@ func MainTest(m *testing.M, pathToGiteaRoot string) {
102112
os.Exit(exitStatus)
103113
}
104114

115+
// FixturesOptions fixtures needs to be loaded options
116+
type FixturesOptions struct {
117+
Dir string
118+
Files []string
119+
}
120+
105121
// CreateTestEngine creates a memory database and loads the fixture data from fixturesDir
106-
func CreateTestEngine(fixturesDir string) error {
122+
func CreateTestEngine(opts FixturesOptions) error {
107123
var err error
108124
x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared&_txlock=immediate")
109125
if err != nil {
@@ -123,7 +139,7 @@ func CreateTestEngine(fixturesDir string) error {
123139
e: x,
124140
}
125141

126-
return InitFixtures(fixturesDir)
142+
return InitFixtures(opts)
127143
}
128144

129145
// PrepareTestDatabase load test fixtures into test database

models/login/main_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,10 @@ import (
1212
)
1313

1414
func TestMain(m *testing.M) {
15-
db.MainTest(m, filepath.Join("..", ".."))
15+
db.MainTest(m, filepath.Join("..", ".."),
16+
"login_source.yml",
17+
"oauth2_application.yml",
18+
"oauth2_authorization_code.yml",
19+
"oauth2_grant.yml",
20+
)
1621
}

0 commit comments

Comments
 (0)