aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2023-09-28 09:38:53 +0800
committerGitHub <noreply@github.com>2023-09-28 01:38:53 +0000
commit673cf6af763fe7fd4301382f7b059b0799fca396 (patch)
treee9d0ed0f9d6af5dd03841c3126c9c8c0544b1277 /models
parente74a3b18afdbe9bbf56b8f845c915c13894d15c3 (diff)
downloadgitea-673cf6af763fe7fd4301382f7b059b0799fca396.tar.gz
gitea-673cf6af763fe7fd4301382f7b059b0799fca396.zip
make writing main test easier (#27270)
This PR removed `unittest.MainTest` the second parameter `TestOptions.GiteaRoot`. Now it detects the root directory by current working directory. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'models')
-rw-r--r--models/activities/main_test.go5
-rw-r--r--models/asymkey/main_test.go2
-rw-r--r--models/auth/main_test.go5
-rw-r--r--models/avatars/main_test.go5
-rw-r--r--models/db/main_test.go5
-rw-r--r--models/db/paginator/main_test.go5
-rw-r--r--models/dbfs/main_test.go5
-rw-r--r--models/git/main_test.go5
-rw-r--r--models/issues/main_test.go5
-rw-r--r--models/main_test.go4
-rw-r--r--models/organization/main_test.go5
-rw-r--r--models/packages/package_test.go5
-rw-r--r--models/perm/access/main_test.go5
-rw-r--r--models/project/main_test.go2
-rw-r--r--models/repo/main_test.go5
-rw-r--r--models/system/main_test.go5
-rw-r--r--models/unittest/testdb.go53
-rw-r--r--models/user/main_test.go5
-rw-r--r--models/webhook/main_test.go2
19 files changed, 47 insertions, 86 deletions
diff --git a/models/activities/main_test.go b/models/activities/main_test.go
index 6be54db658..43afb84ef1 100644
--- a/models/activities/main_test.go
+++ b/models/activities/main_test.go
@@ -4,7 +4,6 @@
package activities_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -14,7 +13,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/asymkey/main_test.go b/models/asymkey/main_test.go
index 701722be12..be71f848d9 100644
--- a/models/asymkey/main_test.go
+++ b/models/asymkey/main_test.go
@@ -4,7 +4,6 @@
package asymkey
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -12,7 +11,6 @@ import (
func TestMain(m *testing.M) {
unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"gpg_key.yml",
"public_key.yml",
diff --git a/models/auth/main_test.go b/models/auth/main_test.go
index f8cbf3bd54..d772ea6b1c 100644
--- a/models/auth/main_test.go
+++ b/models/auth/main_test.go
@@ -4,7 +4,6 @@
package auth_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -17,7 +16,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/avatars/main_test.go b/models/avatars/main_test.go
index 6507632717..c721a7dc2a 100644
--- a/models/avatars/main_test.go
+++ b/models/avatars/main_test.go
@@ -4,7 +4,6 @@
package avatars_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -15,7 +14,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/db/main_test.go b/models/db/main_test.go
index ce48502918..7d80b400fe 100644
--- a/models/db/main_test.go
+++ b/models/db/main_test.go
@@ -4,7 +4,6 @@
package db_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -14,7 +13,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/db/paginator/main_test.go b/models/db/paginator/main_test.go
index b0557bc5a4..47993aed6b 100644
--- a/models/db/paginator/main_test.go
+++ b/models/db/paginator/main_test.go
@@ -4,14 +4,11 @@
package paginator
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", "..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/dbfs/main_test.go b/models/dbfs/main_test.go
index 62db3592be..537ba0935d 100644
--- a/models/dbfs/main_test.go
+++ b/models/dbfs/main_test.go
@@ -4,14 +4,11 @@
package dbfs
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/git/main_test.go b/models/git/main_test.go
index a8658d70c4..aab1fa9a26 100644
--- a/models/git/main_test.go
+++ b/models/git/main_test.go
@@ -4,7 +4,6 @@
package git_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -15,7 +14,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/issues/main_test.go b/models/issues/main_test.go
index 190df027f4..ba83ca5552 100644
--- a/models/issues/main_test.go
+++ b/models/issues/main_test.go
@@ -4,7 +4,6 @@
package issues_test
import (
- "path/filepath"
"testing"
issues_model "code.gitea.io/gitea/models/issues"
@@ -30,7 +29,5 @@ func TestFixturesAreConsistent(t *testing.T) {
}
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/main_test.go b/models/main_test.go
index c09b661d2c..600dcc889b 100644
--- a/models/main_test.go
+++ b/models/main_test.go
@@ -29,7 +29,5 @@ func TestFixturesAreConsistent(t *testing.T) {
}
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: "..",
- })
+ unittest.MainTest(m)
}
diff --git a/models/organization/main_test.go b/models/organization/main_test.go
index bc5bde2565..c35898a465 100644
--- a/models/organization/main_test.go
+++ b/models/organization/main_test.go
@@ -4,7 +4,6 @@
package organization_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -18,7 +17,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/packages/package_test.go b/models/packages/package_test.go
index 525a9f08d6..7f03151e77 100644
--- a/models/packages/package_test.go
+++ b/models/packages/package_test.go
@@ -4,7 +4,6 @@
package packages_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/db"
@@ -20,9 +19,7 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
func TestHasOwnerPackages(t *testing.T) {
diff --git a/models/perm/access/main_test.go b/models/perm/access/main_test.go
index 8102cae496..0a350dc41e 100644
--- a/models/perm/access/main_test.go
+++ b/models/perm/access/main_test.go
@@ -4,7 +4,6 @@
package access_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -17,7 +16,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", "..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/project/main_test.go b/models/project/main_test.go
index 816cbeb94a..f4b2d6feda 100644
--- a/models/project/main_test.go
+++ b/models/project/main_test.go
@@ -4,7 +4,6 @@
package project
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -14,7 +13,6 @@ import (
func TestMain(m *testing.M) {
unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"project.yml",
"project_board.yml",
diff --git a/models/repo/main_test.go b/models/repo/main_test.go
index ff97c7ac9e..b49855f2c8 100644
--- a/models/repo/main_test.go
+++ b/models/repo/main_test.go
@@ -4,7 +4,6 @@
package repo_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -18,7 +17,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/system/main_test.go b/models/system/main_test.go
index e074abc155..6bc27a7cff 100644
--- a/models/system/main_test.go
+++ b/models/system/main_test.go
@@ -4,7 +4,6 @@
package system_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -16,7 +15,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go
index 1ff0fdc25b..6db99cd393 100644
--- a/models/unittest/testdb.go
+++ b/models/unittest/testdb.go
@@ -62,35 +62,46 @@ func InitSettings(extraConfigs ...string) {
// TestOptions represents test options
type TestOptions struct {
- GiteaRootPath string
- FixtureFiles []string
- SetUp func() error // SetUp will be executed before all tests in this package
- TearDown func() error // TearDown will be executed after all tests in this package
+ FixtureFiles []string
+ SetUp func() error // SetUp will be executed before all tests in this package
+ TearDown func() error // TearDown will be executed after all tests in this package
}
// MainTest a reusable TestMain(..) function for unit tests that need to use a
// test database. Creates the test database, and sets necessary settings.
-func MainTest(m *testing.M, testOpts *TestOptions) {
- setting.CustomPath = filepath.Join(testOpts.GiteaRootPath, "custom")
- InitSettings()
-
- var err error
+func MainTest(m *testing.M, testOpts ...*TestOptions) {
+ searchDir, _ := os.Getwd()
+ for searchDir != "" {
+ if _, err := os.Stat(filepath.Join(searchDir, "go.mod")); err == nil {
+ break // The "go.mod" should be the one for Gitea repository
+ }
+ if dir := filepath.Dir(searchDir); dir == searchDir {
+ searchDir = "" // reaches the root of filesystem
+ } else {
+ searchDir = dir
+ }
+ }
+ if searchDir == "" {
+ panic("The tests should run in a Gitea repository, there should be a 'go.mod' in the root")
+ }
- giteaRoot = testOpts.GiteaRootPath
- fixturesDir = filepath.Join(testOpts.GiteaRootPath, "models", "fixtures")
+ giteaRoot = searchDir
+ setting.CustomPath = filepath.Join(giteaRoot, "custom")
+ InitSettings()
+ fixturesDir = filepath.Join(giteaRoot, "models", "fixtures")
var opts FixturesOptions
- if len(testOpts.FixtureFiles) == 0 {
+ if len(testOpts) == 0 || len(testOpts[0].FixtureFiles) == 0 {
opts.Dir = fixturesDir
} else {
- for _, f := range testOpts.FixtureFiles {
+ for _, f := range testOpts[0].FixtureFiles {
if len(f) != 0 {
opts.Files = append(opts.Files, filepath.Join(fixturesDir, f))
}
}
}
- if err = CreateTestEngine(opts); err != nil {
+ if err := CreateTestEngine(opts); err != nil {
fatalTestError("Error creating test engine: %v\n", err)
}
@@ -112,8 +123,8 @@ func MainTest(m *testing.M, testOpts *TestOptions) {
fatalTestError("TempDir: %v\n", err)
}
setting.AppDataPath = appDataPath
- setting.AppWorkPath = testOpts.GiteaRootPath
- setting.StaticRootPath = testOpts.GiteaRootPath
+ setting.AppWorkPath = giteaRoot
+ setting.StaticRootPath = giteaRoot
setting.GravatarSource = "https://secure.gravatar.com/avatar/"
setting.Attachment.Storage.Path = filepath.Join(setting.AppDataPath, "attachments")
@@ -144,7 +155,7 @@ func MainTest(m *testing.M, testOpts *TestOptions) {
if err = util.RemoveAll(repoRootPath); err != nil {
fatalTestError("util.RemoveAll: %v\n", err)
}
- if err = CopyDir(filepath.Join(testOpts.GiteaRootPath, "tests", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
+ if err = CopyDir(filepath.Join(giteaRoot, "tests", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
fatalTestError("util.CopyDir: %v\n", err)
}
@@ -171,16 +182,16 @@ func MainTest(m *testing.M, testOpts *TestOptions) {
}
}
- if testOpts.SetUp != nil {
- if err := testOpts.SetUp(); err != nil {
+ if len(testOpts) > 0 && testOpts[0].SetUp != nil {
+ if err := testOpts[0].SetUp(); err != nil {
fatalTestError("set up failed: %v\n", err)
}
}
exitStatus := m.Run()
- if testOpts.TearDown != nil {
- if err := testOpts.TearDown(); err != nil {
+ if len(testOpts) > 0 && testOpts[0].TearDown != nil {
+ if err := testOpts[0].TearDown(); err != nil {
fatalTestError("tear down failed: %v\n", err)
}
}
diff --git a/models/user/main_test.go b/models/user/main_test.go
index 8833cc7386..a626d323a7 100644
--- a/models/user/main_test.go
+++ b/models/user/main_test.go
@@ -4,7 +4,6 @@
package user_test
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -16,7 +15,5 @@ import (
)
func TestMain(m *testing.M) {
- unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
- })
+ unittest.MainTest(m)
}
diff --git a/models/webhook/main_test.go b/models/webhook/main_test.go
index 8df569a3cc..f19465d505 100644
--- a/models/webhook/main_test.go
+++ b/models/webhook/main_test.go
@@ -4,7 +4,6 @@
package webhook
import (
- "path/filepath"
"testing"
"code.gitea.io/gitea/models/unittest"
@@ -12,7 +11,6 @@ import (
func TestMain(m *testing.M) {
unittest.MainTest(m, &unittest.TestOptions{
- GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"webhook.yml",
"hook_task.yml",