From b2fc98fdf8e4afbb04195296274dc0d438550f92 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 Sep 2023 10:57:57 +0800 Subject: [PATCH 1/6] make writing main test easier --- cmd/main_test.go | 4 +-- models/activities/main_test.go | 5 +-- models/asymkey/main_test.go | 2 -- models/auth/main_test.go | 5 +-- models/avatars/main_test.go | 5 +-- models/db/main_test.go | 5 +-- models/db/paginator/main_test.go | 5 +-- models/dbfs/main_test.go | 5 +-- models/git/main_test.go | 5 +-- models/issues/main_test.go | 5 +-- models/main_test.go | 4 +-- models/organization/main_test.go | 5 +-- models/packages/package_test.go | 5 +-- models/perm/access/main_test.go | 5 +-- models/project/main_test.go | 2 -- models/repo/main_test.go | 5 +-- models/system/main_test.go | 5 +-- models/unittest/testdb.go | 33 +++++++++++-------- models/user/main_test.go | 5 +-- models/webhook/main_test.go | 2 -- modules/activitypub/main_test.go | 5 +-- modules/indexer/code/indexer_test.go | 5 +-- modules/indexer/issues/indexer_test.go | 5 +-- modules/indexer/stats/indexer_test.go | 5 +-- modules/repository/main_test.go | 5 +-- modules/system/appstate_test.go | 4 +-- routers/api/v1/repo/main_test.go | 2 -- routers/common/errpage_test.go | 5 +-- routers/install/routes_test.go | 5 +-- routers/private/main_test.go | 5 +-- routers/web/admin/main_test.go | 5 +-- routers/web/auth/main_test.go | 5 +-- routers/web/org/main_test.go | 5 +-- routers/web/repo/main_test.go | 5 +-- routers/web/repo/setting/main_test.go | 5 +-- routers/web/user/main_test.go | 5 +-- routers/web/user/setting/main_test.go | 5 +-- services/asymkey/main_test.go | 5 +-- services/attachment/attachment_test.go | 4 +-- services/convert/main_test.go | 5 +-- services/feed/action_test.go | 5 +-- services/gitdiff/main_test.go | 5 +-- services/issue/main_test.go | 5 +-- services/mailer/main_test.go | 5 +-- services/markup/main_test.go | 4 +-- services/migrations/main_test.go | 5 +-- services/org/org_test.go | 5 +-- services/pull/main_test.go | 5 +-- services/release/release_test.go | 5 +-- services/repository/archiver/archiver_test.go | 5 +-- services/repository/files/content_test.go | 5 +-- services/repository/main_test.go | 5 +-- services/user/user_test.go | 5 +-- services/webhook/main_test.go | 2 -- services/wiki/wiki_test.go | 5 +-- 55 files changed, 69 insertions(+), 214 deletions(-) diff --git a/cmd/main_test.go b/cmd/main_test.go index 0e32dce564872..76387faefa02a 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -20,9 +20,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: "..", - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func makePathOutput(workPath, customPath, customConf string) string { diff --git a/models/activities/main_test.go b/models/activities/main_test.go index 6be54db658b87..41daad2491028 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, &unittest.TestOptions{}) } diff --git a/models/asymkey/main_test.go b/models/asymkey/main_test.go index 701722be12ec8..be71f848d9d8d 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 f8cbf3bd54619..4ce313c12b4b2 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, &unittest.TestOptions{}) } diff --git a/models/avatars/main_test.go b/models/avatars/main_test.go index 6507632717792..463c6c10d2887 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, &unittest.TestOptions{}) } diff --git a/models/db/main_test.go b/models/db/main_test.go index ce48502918573..531c438b56e24 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, &unittest.TestOptions{}) } diff --git a/models/db/paginator/main_test.go b/models/db/paginator/main_test.go index b0557bc5a4a9a..d0e7e7e49c5e0 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, &unittest.TestOptions{}) } diff --git a/models/dbfs/main_test.go b/models/dbfs/main_test.go index 62db3592bed2a..58db6e26c6e73 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, &unittest.TestOptions{}) } diff --git a/models/git/main_test.go b/models/git/main_test.go index a8658d70c4cd1..aa5d39b692430 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, &unittest.TestOptions{}) } diff --git a/models/issues/main_test.go b/models/issues/main_test.go index 190df027f4f27..e1b8088fae2e2 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, &unittest.TestOptions{}) } diff --git a/models/main_test.go b/models/main_test.go index c09b661d2c241..7b8961120e794 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, &unittest.TestOptions{}) } diff --git a/models/organization/main_test.go b/models/organization/main_test.go index bc5bde2565c27..aced01c51c44f 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, &unittest.TestOptions{}) } diff --git a/models/packages/package_test.go b/models/packages/package_test.go index 525a9f08d62c5..5af35444c670b 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, &unittest.TestOptions{}) } func TestHasOwnerPackages(t *testing.T) { diff --git a/models/perm/access/main_test.go b/models/perm/access/main_test.go index 8102cae49647b..9691d978693c6 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, &unittest.TestOptions{}) } diff --git a/models/project/main_test.go b/models/project/main_test.go index 816cbeb94a045..f4b2d6fedac24 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 ff97c7ac9ef88..b163490f0737a 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, &unittest.TestOptions{}) } diff --git a/models/system/main_test.go b/models/system/main_test.go index e074abc1551a4..256ab86ff9eac 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, &unittest.TestOptions{}) } diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index 1ff0fdc25bda8..bb263018c765b 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -9,6 +9,7 @@ import ( "log" "os" "path/filepath" + "runtime" "strings" "testing" @@ -62,23 +63,28 @@ 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 + _, file, _, _ := runtime.Caller(1) + for { + file = filepath.Dir(file) + exist, _ := util.IsFile(filepath.Join(file, "go.mod")) // Gitea workspace should be only one golang project + if exist { + break + } + } + giteaRoot = file - giteaRoot = testOpts.GiteaRootPath - fixturesDir = filepath.Join(testOpts.GiteaRootPath, "models", "fixtures") + setting.CustomPath = filepath.Join(giteaRoot, "custom") + InitSettings() + fixturesDir = filepath.Join(giteaRoot, "models", "fixtures") var opts FixturesOptions if len(testOpts.FixtureFiles) == 0 { opts.Dir = fixturesDir @@ -90,6 +96,7 @@ func MainTest(m *testing.M, testOpts *TestOptions) { } } + var err error if err = CreateTestEngine(opts); err != nil { fatalTestError("Error creating test engine: %v\n", err) } @@ -112,8 +119,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 +151,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) } diff --git a/models/user/main_test.go b/models/user/main_test.go index 8833cc73862b7..ab8114a91b5de 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, &unittest.TestOptions{}) } diff --git a/models/webhook/main_test.go b/models/webhook/main_test.go index 8df569a3ccf49..f19465d50530e 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", diff --git a/modules/activitypub/main_test.go b/modules/activitypub/main_test.go index dcd57bb59e5e2..c6df2770bb393 100644 --- a/modules/activitypub/main_test.go +++ b/modules/activitypub/main_test.go @@ -4,7 +4,6 @@ package activitypub 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, &unittest.TestOptions{}) } diff --git a/modules/indexer/code/indexer_test.go b/modules/indexer/code/indexer_test.go index 2a650646bd927..ba86134910b11 100644 --- a/modules/indexer/code/indexer_test.go +++ b/modules/indexer/code/indexer_test.go @@ -6,7 +6,6 @@ package code import ( "context" "os" - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -23,9 +22,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", "..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func testIndexer(name string, t *testing.T, indexer internal.Indexer) { diff --git a/modules/indexer/issues/indexer_test.go b/modules/indexer/issues/indexer_test.go index 7241f6313c891..6e2b95c1588a4 100644 --- a/modules/indexer/issues/indexer_test.go +++ b/modules/indexer/issues/indexer_test.go @@ -5,7 +5,6 @@ package issues import ( "context" - "path/filepath" "testing" "code.gitea.io/gitea/models/db" @@ -22,9 +21,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", "..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestDBSearchIssues(t *testing.T) { diff --git a/modules/indexer/stats/indexer_test.go b/modules/indexer/stats/indexer_test.go index c03151543401c..8e1464b588e58 100644 --- a/modules/indexer/stats/indexer_test.go +++ b/modules/indexer/stats/indexer_test.go @@ -5,7 +5,6 @@ package stats import ( "context" - "path/filepath" "testing" "time" @@ -23,9 +22,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", "..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestRepoStatsIndex(t *testing.T) { diff --git a/modules/repository/main_test.go b/modules/repository/main_test.go index abaae69866308..db296037ebf01 100644 --- a/modules/repository/main_test.go +++ b/modules/repository/main_test.go @@ -4,7 +4,6 @@ package repository import ( - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -13,7 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } diff --git a/modules/system/appstate_test.go b/modules/system/appstate_test.go index 65a6e5000331a..232362cf0c8a7 100644 --- a/modules/system/appstate_test.go +++ b/modules/system/appstate_test.go @@ -4,7 +4,6 @@ package system import ( - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -14,8 +13,7 @@ import ( func TestMain(m *testing.M) { unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - FixtureFiles: []string{""}, // load nothing + FixtureFiles: []string{""}, // load nothing }) } diff --git a/routers/api/v1/repo/main_test.go b/routers/api/v1/repo/main_test.go index bc048505f472f..451f34d72fff7 100644 --- a/routers/api/v1/repo/main_test.go +++ b/routers/api/v1/repo/main_test.go @@ -4,7 +4,6 @@ package repo 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("..", "..", "..", ".."), SetUp: func() error { setting.LoadQueueSettings() return webhook_service.Init() diff --git a/routers/common/errpage_test.go b/routers/common/errpage_test.go index ea9a9e745c139..153b3f2a7024c 100644 --- a/routers/common/errpage_test.go +++ b/routers/common/errpage_test.go @@ -9,7 +9,6 @@ import ( "net/http" "net/http/httptest" "net/url" - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -35,7 +34,5 @@ func TestRenderPanicErrorPage(t *testing.T) { } func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } diff --git a/routers/install/routes_test.go b/routers/install/routes_test.go index fcbd052977427..bbe872d7d9d01 100644 --- a/routers/install/routes_test.go +++ b/routers/install/routes_test.go @@ -5,7 +5,6 @@ package install import ( "net/http/httptest" - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -35,7 +34,5 @@ func TestRoutes(t *testing.T) { } func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } diff --git a/routers/private/main_test.go b/routers/private/main_test.go index 700af6ec8d413..b4b092d17c47a 100644 --- a/routers/private/main_test.go +++ b/routers/private/main_test.go @@ -4,14 +4,11 @@ package private 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, &unittest.TestOptions{}) } diff --git a/routers/web/admin/main_test.go b/routers/web/admin/main_test.go index ea79830fa1358..b75038d155c94 100644 --- a/routers/web/admin/main_test.go +++ b/routers/web/admin/main_test.go @@ -4,14 +4,11 @@ package admin 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, &unittest.TestOptions{}) } diff --git a/routers/web/auth/main_test.go b/routers/web/auth/main_test.go index 8295515ba9506..e8a6de7df5fde 100644 --- a/routers/web/auth/main_test.go +++ b/routers/web/auth/main_test.go @@ -4,14 +4,11 @@ package auth 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, &unittest.TestOptions{}) } diff --git a/routers/web/org/main_test.go b/routers/web/org/main_test.go index 41323a3601eae..ed4179d94a4c1 100644 --- a/routers/web/org/main_test.go +++ b/routers/web/org/main_test.go @@ -4,14 +4,11 @@ package org_test 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, &unittest.TestOptions{}) } diff --git a/routers/web/repo/main_test.go b/routers/web/repo/main_test.go index e3a09a95bd36d..024ac0eda14c2 100644 --- a/routers/web/repo/main_test.go +++ b/routers/web/repo/main_test.go @@ -4,14 +4,11 @@ package repo 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, &unittest.TestOptions{}) } diff --git a/routers/web/repo/setting/main_test.go b/routers/web/repo/setting/main_test.go index 5a6fa5621775b..bc3ae7a77f788 100644 --- a/routers/web/repo/setting/main_test.go +++ b/routers/web/repo/setting/main_test.go @@ -4,14 +4,11 @@ package setting 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, &unittest.TestOptions{}) } diff --git a/routers/web/user/main_test.go b/routers/web/user/main_test.go index 925482a1d2ba7..2ced1c02bef23 100644 --- a/routers/web/user/main_test.go +++ b/routers/web/user/main_test.go @@ -4,14 +4,11 @@ package user 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, &unittest.TestOptions{}) } diff --git a/routers/web/user/setting/main_test.go b/routers/web/user/setting/main_test.go index c3938b32011c5..e410e87db03dd 100644 --- a/routers/web/user/setting/main_test.go +++ b/routers/web/user/setting/main_test.go @@ -4,14 +4,11 @@ package setting 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, &unittest.TestOptions{}) } diff --git a/services/asymkey/main_test.go b/services/asymkey/main_test.go index e7a03861b9cce..a62d786bcc049 100644 --- a/services/asymkey/main_test.go +++ b/services/asymkey/main_test.go @@ -4,7 +4,6 @@ package asymkey 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, &unittest.TestOptions{}) } diff --git a/services/attachment/attachment_test.go b/services/attachment/attachment_test.go index 35fcef7445c84..d3435ccfba2d3 100644 --- a/services/attachment/attachment_test.go +++ b/services/attachment/attachment_test.go @@ -19,9 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestUploadAttachment(t *testing.T) { diff --git a/services/convert/main_test.go b/services/convert/main_test.go index c2298dcb74a62..d6bfa4e0edab9 100644 --- a/services/convert/main_test.go +++ b/services/convert/main_test.go @@ -4,7 +4,6 @@ package convert import ( - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -13,7 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } diff --git a/services/feed/action_test.go b/services/feed/action_test.go index fd84bb675b1c6..45dbce9a3adc1 100644 --- a/services/feed/action_test.go +++ b/services/feed/action_test.go @@ -4,7 +4,6 @@ package feed import ( - "path/filepath" "strings" "testing" @@ -20,9 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestRenameRepoAction(t *testing.T) { diff --git a/services/gitdiff/main_test.go b/services/gitdiff/main_test.go index 7f4243576cc97..f3a3b78226198 100644 --- a/services/gitdiff/main_test.go +++ b/services/gitdiff/main_test.go @@ -4,7 +4,6 @@ package gitdiff 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, &unittest.TestOptions{}) } diff --git a/services/issue/main_test.go b/services/issue/main_test.go index 6bce694ccaff3..4d062762fc747 100644 --- a/services/issue/main_test.go +++ b/services/issue/main_test.go @@ -4,7 +4,6 @@ package issue import ( - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -13,7 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } diff --git a/services/mailer/main_test.go b/services/mailer/main_test.go index e906f4cb6e175..2d5df91a14ae8 100644 --- a/services/mailer/main_test.go +++ b/services/mailer/main_test.go @@ -4,7 +4,6 @@ package mailer import ( - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -13,7 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } diff --git a/services/markup/main_test.go b/services/markup/main_test.go index ce892435a1aed..89fe3e7e3461a 100644 --- a/services/markup/main_test.go +++ b/services/markup/main_test.go @@ -4,7 +4,6 @@ package markup 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{"user.yml"}, + FixtureFiles: []string{"user.yml"}, }) } diff --git a/services/migrations/main_test.go b/services/migrations/main_test.go index 42c433fb0031f..ec97dca823fae 100644 --- a/services/migrations/main_test.go +++ b/services/migrations/main_test.go @@ -5,7 +5,6 @@ package migrations import ( - "path/filepath" "testing" "time" @@ -16,9 +15,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func timePtr(t time.Time) *time.Time { diff --git a/services/org/org_test.go b/services/org/org_test.go index cc22595c6f198..fc6d03f3052b1 100644 --- a/services/org/org_test.go +++ b/services/org/org_test.go @@ -4,7 +4,6 @@ package org import ( - "path/filepath" "testing" "code.gitea.io/gitea/models" @@ -16,9 +15,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestDeleteOrganization(t *testing.T) { diff --git a/services/pull/main_test.go b/services/pull/main_test.go index f5297354d65d7..df4db949d2bf7 100644 --- a/services/pull/main_test.go +++ b/services/pull/main_test.go @@ -5,7 +5,6 @@ package pull 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, &unittest.TestOptions{}) } diff --git a/services/release/release_test.go b/services/release/release_test.go index 9c652f28d2e37..0b806ecf6d235 100644 --- a/services/release/release_test.go +++ b/services/release/release_test.go @@ -4,7 +4,6 @@ package release import ( - "path/filepath" "strings" "testing" "time" @@ -22,9 +21,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestRelease_Create(t *testing.T) { diff --git a/services/repository/archiver/archiver_test.go b/services/repository/archiver/archiver_test.go index a1bc355d4e9f3..19ce532e942d8 100644 --- a/services/repository/archiver/archiver_test.go +++ b/services/repository/archiver/archiver_test.go @@ -5,7 +5,6 @@ package archiver import ( "errors" - "path/filepath" "testing" "time" @@ -18,9 +17,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", "..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestArchive_Basic(t *testing.T) { diff --git a/services/repository/files/content_test.go b/services/repository/files/content_test.go index d591c468399d9..0fda10bddd808 100644 --- a/services/repository/files/content_test.go +++ b/services/repository/files/content_test.go @@ -4,7 +4,6 @@ package files import ( - "path/filepath" "testing" repo_model "code.gitea.io/gitea/models/repo" @@ -19,9 +18,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", "..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func getExpectedReadmeContentsResponse() *api.ContentsResponse { diff --git a/services/repository/main_test.go b/services/repository/main_test.go index 007790f2a9626..28917c61c6976 100644 --- a/services/repository/main_test.go +++ b/services/repository/main_test.go @@ -4,14 +4,11 @@ package repository 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, &unittest.TestOptions{}) } diff --git a/services/user/user_test.go b/services/user/user_test.go index b8f7b9b1a2514..033707ddfc65f 100644 --- a/services/user/user_test.go +++ b/services/user/user_test.go @@ -5,7 +5,6 @@ package user import ( "fmt" - "path/filepath" "strings" "testing" @@ -22,9 +21,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestDeleteUser(t *testing.T) { diff --git a/services/webhook/main_test.go b/services/webhook/main_test.go index cd34c02b5c561..756b9db23083c 100644 --- a/services/webhook/main_test.go +++ b/services/webhook/main_test.go @@ -4,7 +4,6 @@ package webhook import ( - "path/filepath" "testing" "code.gitea.io/gitea/models/unittest" @@ -19,7 +18,6 @@ func TestMain(m *testing.M) { // for tests, allow only loopback IPs setting.Webhook.AllowedHostList = hostmatcher.MatchBuiltinLoopback unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), SetUp: func() error { setting.LoadQueueSettings() return Init() diff --git a/services/wiki/wiki_test.go b/services/wiki/wiki_test.go index 81a688b046a7c..626c30b353ca2 100644 --- a/services/wiki/wiki_test.go +++ b/services/wiki/wiki_test.go @@ -5,7 +5,6 @@ package wiki import ( "math/rand" - "path/filepath" "strings" "testing" @@ -20,9 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{ - GiteaRootPath: filepath.Join("..", ".."), - }) + unittest.MainTest(m, &unittest.TestOptions{}) } func TestWebPathSegments(t *testing.T) { From 7619a8844049f0a69b30d6d578221440bb19d33d Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 Sep 2023 11:02:01 +0800 Subject: [PATCH 2/6] Add more check --- models/unittest/testdb.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index bb263018c765b..b938f4deabe1f 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -72,15 +72,20 @@ type TestOptions struct { // test database. Creates the test database, and sets necessary settings. func MainTest(m *testing.M, testOpts *TestOptions) { _, file, _, _ := runtime.Caller(1) + found := false for { file = filepath.Dir(file) exist, _ := util.IsFile(filepath.Join(file, "go.mod")) // Gitea workspace should be only one golang project if exist { + found = true break } } - giteaRoot = file + if !found { + panic("You cannot run the tests out of a golang repository") + } + giteaRoot = file setting.CustomPath = filepath.Join(giteaRoot, "custom") InitSettings() From fa8dd93c805ac853fbafd3eb0eb1472a842564ca Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 Sep 2023 11:13:20 +0800 Subject: [PATCH 3/6] ignore the unnecessary parameter --- cmd/main_test.go | 2 +- models/activities/main_test.go | 2 +- models/auth/main_test.go | 2 +- models/avatars/main_test.go | 2 +- models/db/main_test.go | 2 +- models/db/paginator/main_test.go | 2 +- models/dbfs/main_test.go | 2 +- models/git/main_test.go | 2 +- models/issues/main_test.go | 2 +- models/main_test.go | 2 +- models/organization/main_test.go | 2 +- models/packages/package_test.go | 2 +- models/perm/access/main_test.go | 2 +- models/repo/main_test.go | 2 +- models/system/main_test.go | 2 +- models/unittest/testdb.go | 16 ++++++++-------- models/user/main_test.go | 2 +- modules/activitypub/main_test.go | 2 +- modules/indexer/code/indexer_test.go | 2 +- modules/indexer/issues/indexer_test.go | 2 +- modules/indexer/stats/indexer_test.go | 2 +- modules/repository/main_test.go | 2 +- routers/common/errpage_test.go | 2 +- routers/install/routes_test.go | 2 +- routers/private/main_test.go | 2 +- routers/web/admin/main_test.go | 2 +- routers/web/auth/main_test.go | 2 +- routers/web/org/main_test.go | 2 +- routers/web/repo/main_test.go | 2 +- routers/web/repo/setting/main_test.go | 2 +- routers/web/user/main_test.go | 2 +- routers/web/user/setting/main_test.go | 2 +- services/asymkey/main_test.go | 2 +- services/attachment/attachment_test.go | 2 +- services/convert/main_test.go | 2 +- services/feed/action_test.go | 2 +- services/gitdiff/main_test.go | 2 +- services/issue/main_test.go | 2 +- services/mailer/main_test.go | 2 +- services/migrations/main_test.go | 2 +- services/org/org_test.go | 2 +- services/pull/main_test.go | 2 +- services/release/release_test.go | 2 +- services/repository/archiver/archiver_test.go | 2 +- services/repository/files/content_test.go | 2 +- services/repository/main_test.go | 2 +- services/user/user_test.go | 2 +- services/wiki/wiki_test.go | 2 +- 48 files changed, 55 insertions(+), 55 deletions(-) diff --git a/cmd/main_test.go b/cmd/main_test.go index 76387faefa02a..a916c61f853d2 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -20,7 +20,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func makePathOutput(workPath, customPath, customConf string) string { diff --git a/models/activities/main_test.go b/models/activities/main_test.go index 41daad2491028..43afb84ef15ac 100644 --- a/models/activities/main_test.go +++ b/models/activities/main_test.go @@ -13,5 +13,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/auth/main_test.go b/models/auth/main_test.go index 4ce313c12b4b2..d772ea6b1c8b5 100644 --- a/models/auth/main_test.go +++ b/models/auth/main_test.go @@ -16,5 +16,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/avatars/main_test.go b/models/avatars/main_test.go index 463c6c10d2887..c721a7dc2ac1d 100644 --- a/models/avatars/main_test.go +++ b/models/avatars/main_test.go @@ -14,5 +14,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/db/main_test.go b/models/db/main_test.go index 531c438b56e24..7d80b400fe53d 100644 --- a/models/db/main_test.go +++ b/models/db/main_test.go @@ -13,5 +13,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/db/paginator/main_test.go b/models/db/paginator/main_test.go index d0e7e7e49c5e0..47993aed6be66 100644 --- a/models/db/paginator/main_test.go +++ b/models/db/paginator/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/dbfs/main_test.go b/models/dbfs/main_test.go index 58db6e26c6e73..537ba0935d646 100644 --- a/models/dbfs/main_test.go +++ b/models/dbfs/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/git/main_test.go b/models/git/main_test.go index aa5d39b692430..aab1fa9a26f40 100644 --- a/models/git/main_test.go +++ b/models/git/main_test.go @@ -14,5 +14,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/issues/main_test.go b/models/issues/main_test.go index e1b8088fae2e2..ba83ca555240b 100644 --- a/models/issues/main_test.go +++ b/models/issues/main_test.go @@ -29,5 +29,5 @@ func TestFixturesAreConsistent(t *testing.T) { } func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/main_test.go b/models/main_test.go index 7b8961120e794..600dcc889b7b6 100644 --- a/models/main_test.go +++ b/models/main_test.go @@ -29,5 +29,5 @@ func TestFixturesAreConsistent(t *testing.T) { } func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/organization/main_test.go b/models/organization/main_test.go index aced01c51c44f..c35898a465dc2 100644 --- a/models/organization/main_test.go +++ b/models/organization/main_test.go @@ -17,5 +17,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/packages/package_test.go b/models/packages/package_test.go index 5af35444c670b..7f03151e7745c 100644 --- a/models/packages/package_test.go +++ b/models/packages/package_test.go @@ -19,7 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + 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 9691d978693c6..0a350dc41eab5 100644 --- a/models/perm/access/main_test.go +++ b/models/perm/access/main_test.go @@ -16,5 +16,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/repo/main_test.go b/models/repo/main_test.go index b163490f0737a..b49855f2c866d 100644 --- a/models/repo/main_test.go +++ b/models/repo/main_test.go @@ -17,5 +17,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/system/main_test.go b/models/system/main_test.go index 256ab86ff9eac..6bc27a7cff8b3 100644 --- a/models/system/main_test.go +++ b/models/system/main_test.go @@ -15,5 +15,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index b938f4deabe1f..52237b84f55a6 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -70,9 +70,9 @@ type TestOptions struct { // 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) { +func MainTest(m *testing.M, testOpts ...*TestOptions) { _, file, _, _ := runtime.Caller(1) - found := false + var found bool for { file = filepath.Dir(file) exist, _ := util.IsFile(filepath.Join(file, "go.mod")) // Gitea workspace should be only one golang project @@ -91,10 +91,10 @@ func MainTest(m *testing.M, testOpts *TestOptions) { 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)) } @@ -183,16 +183,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 ab8114a91b5de..a626d323a71a5 100644 --- a/models/user/main_test.go +++ b/models/user/main_test.go @@ -15,5 +15,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/modules/activitypub/main_test.go b/modules/activitypub/main_test.go index c6df2770bb393..4591f1fa5559d 100644 --- a/modules/activitypub/main_test.go +++ b/modules/activitypub/main_test.go @@ -14,5 +14,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/modules/indexer/code/indexer_test.go b/modules/indexer/code/indexer_test.go index ba86134910b11..5b2a97d3d5fec 100644 --- a/modules/indexer/code/indexer_test.go +++ b/modules/indexer/code/indexer_test.go @@ -22,7 +22,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func testIndexer(name string, t *testing.T, indexer internal.Indexer) { diff --git a/modules/indexer/issues/indexer_test.go b/modules/indexer/issues/indexer_test.go index 6e2b95c1588a4..0ec23164c2808 100644 --- a/modules/indexer/issues/indexer_test.go +++ b/modules/indexer/issues/indexer_test.go @@ -21,7 +21,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestDBSearchIssues(t *testing.T) { diff --git a/modules/indexer/stats/indexer_test.go b/modules/indexer/stats/indexer_test.go index 8e1464b588e58..6f935a20de3d9 100644 --- a/modules/indexer/stats/indexer_test.go +++ b/modules/indexer/stats/indexer_test.go @@ -22,7 +22,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestRepoStatsIndex(t *testing.T) { diff --git a/modules/repository/main_test.go b/modules/repository/main_test.go index db296037ebf01..f81dfcdafbc80 100644 --- a/modules/repository/main_test.go +++ b/modules/repository/main_test.go @@ -12,5 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/common/errpage_test.go b/routers/common/errpage_test.go index 153b3f2a7024c..58a633b2a453a 100644 --- a/routers/common/errpage_test.go +++ b/routers/common/errpage_test.go @@ -34,5 +34,5 @@ func TestRenderPanicErrorPage(t *testing.T) { } func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/install/routes_test.go b/routers/install/routes_test.go index bbe872d7d9d01..2aa7f5d7b739f 100644 --- a/routers/install/routes_test.go +++ b/routers/install/routes_test.go @@ -34,5 +34,5 @@ func TestRoutes(t *testing.T) { } func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/private/main_test.go b/routers/private/main_test.go index b4b092d17c47a..a6bec72b41d56 100644 --- a/routers/private/main_test.go +++ b/routers/private/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/admin/main_test.go b/routers/web/admin/main_test.go index b75038d155c94..e1294ddbb4025 100644 --- a/routers/web/admin/main_test.go +++ b/routers/web/admin/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/auth/main_test.go b/routers/web/auth/main_test.go index e8a6de7df5fde..b438e5d51886b 100644 --- a/routers/web/auth/main_test.go +++ b/routers/web/auth/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/org/main_test.go b/routers/web/org/main_test.go index ed4179d94a4c1..92237d6e88472 100644 --- a/routers/web/org/main_test.go +++ b/routers/web/org/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/repo/main_test.go b/routers/web/repo/main_test.go index 024ac0eda14c2..6e469cf2ed756 100644 --- a/routers/web/repo/main_test.go +++ b/routers/web/repo/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/repo/setting/main_test.go b/routers/web/repo/setting/main_test.go index bc3ae7a77f788..c414b853e510a 100644 --- a/routers/web/repo/setting/main_test.go +++ b/routers/web/repo/setting/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/user/main_test.go b/routers/web/user/main_test.go index 2ced1c02bef23..8b6ae69296ba8 100644 --- a/routers/web/user/main_test.go +++ b/routers/web/user/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/routers/web/user/setting/main_test.go b/routers/web/user/setting/main_test.go index e410e87db03dd..e398208d0daab 100644 --- a/routers/web/user/setting/main_test.go +++ b/routers/web/user/setting/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/asymkey/main_test.go b/services/asymkey/main_test.go index a62d786bcc049..3505b26f699a6 100644 --- a/services/asymkey/main_test.go +++ b/services/asymkey/main_test.go @@ -13,5 +13,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/attachment/attachment_test.go b/services/attachment/attachment_test.go index d3435ccfba2d3..77ef1cd37ce81 100644 --- a/services/attachment/attachment_test.go +++ b/services/attachment/attachment_test.go @@ -19,7 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestUploadAttachment(t *testing.T) { diff --git a/services/convert/main_test.go b/services/convert/main_test.go index d6bfa4e0edab9..363cc4a97f5b6 100644 --- a/services/convert/main_test.go +++ b/services/convert/main_test.go @@ -12,5 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/feed/action_test.go b/services/feed/action_test.go index 45dbce9a3adc1..e1b071d8f604e 100644 --- a/services/feed/action_test.go +++ b/services/feed/action_test.go @@ -19,7 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestRenameRepoAction(t *testing.T) { diff --git a/services/gitdiff/main_test.go b/services/gitdiff/main_test.go index f3a3b78226198..cd9dcd8cd6fa5 100644 --- a/services/gitdiff/main_test.go +++ b/services/gitdiff/main_test.go @@ -14,5 +14,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/issue/main_test.go b/services/issue/main_test.go index 4d062762fc747..5dac54183baf4 100644 --- a/services/issue/main_test.go +++ b/services/issue/main_test.go @@ -12,5 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/mailer/main_test.go b/services/mailer/main_test.go index 2d5df91a14ae8..f803c736ca14a 100644 --- a/services/mailer/main_test.go +++ b/services/mailer/main_test.go @@ -12,5 +12,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/migrations/main_test.go b/services/migrations/main_test.go index ec97dca823fae..d0ec6a3f8d718 100644 --- a/services/migrations/main_test.go +++ b/services/migrations/main_test.go @@ -15,7 +15,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func timePtr(t time.Time) *time.Time { diff --git a/services/org/org_test.go b/services/org/org_test.go index fc6d03f3052b1..339646795da37 100644 --- a/services/org/org_test.go +++ b/services/org/org_test.go @@ -15,7 +15,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestDeleteOrganization(t *testing.T) { diff --git a/services/pull/main_test.go b/services/pull/main_test.go index df4db949d2bf7..efbb63a36ec50 100644 --- a/services/pull/main_test.go +++ b/services/pull/main_test.go @@ -13,5 +13,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/release/release_test.go b/services/release/release_test.go index 0b806ecf6d235..3f0c67b0e0196 100644 --- a/services/release/release_test.go +++ b/services/release/release_test.go @@ -21,7 +21,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestRelease_Create(t *testing.T) { diff --git a/services/repository/archiver/archiver_test.go b/services/repository/archiver/archiver_test.go index 19ce532e942d8..ff8bb8ca7a9b6 100644 --- a/services/repository/archiver/archiver_test.go +++ b/services/repository/archiver/archiver_test.go @@ -17,7 +17,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestArchive_Basic(t *testing.T) { diff --git a/services/repository/files/content_test.go b/services/repository/files/content_test.go index 0fda10bddd808..3ad3e3ab98b2a 100644 --- a/services/repository/files/content_test.go +++ b/services/repository/files/content_test.go @@ -18,7 +18,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func getExpectedReadmeContentsResponse() *api.ContentsResponse { diff --git a/services/repository/main_test.go b/services/repository/main_test.go index 28917c61c6976..7ad1540aee48a 100644 --- a/services/repository/main_test.go +++ b/services/repository/main_test.go @@ -10,5 +10,5 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } diff --git a/services/user/user_test.go b/services/user/user_test.go index 033707ddfc65f..550dafd9c56c0 100644 --- a/services/user/user_test.go +++ b/services/user/user_test.go @@ -21,7 +21,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestDeleteUser(t *testing.T) { diff --git a/services/wiki/wiki_test.go b/services/wiki/wiki_test.go index 626c30b353ca2..e8da176a08d2c 100644 --- a/services/wiki/wiki_test.go +++ b/services/wiki/wiki_test.go @@ -19,7 +19,7 @@ import ( ) func TestMain(m *testing.M) { - unittest.MainTest(m, &unittest.TestOptions{}) + unittest.MainTest(m) } func TestWebPathSegments(t *testing.T) { From 0028682b37d7017ec692ac98fc74a61bce943e83 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 Sep 2023 20:31:02 +0800 Subject: [PATCH 4/6] Use os.Getwd to get test current directory --- models/unittest/testdb.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index 52237b84f55a6..65dc7ec14a35d 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -9,7 +9,6 @@ import ( "log" "os" "path/filepath" - "runtime" "strings" "testing" @@ -71,7 +70,10 @@ type TestOptions struct { // 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) { - _, file, _, _ := runtime.Caller(1) + file, err := os.Getwd() + if err != nil { + panic(err) + } var found bool for { file = filepath.Dir(file) @@ -101,7 +103,6 @@ func MainTest(m *testing.M, testOpts ...*TestOptions) { } } - var err error if err = CreateTestEngine(opts); err != nil { fatalTestError("Error creating test engine: %v\n", err) } From 00996a16827c38f2de1c4317e5f6a1618d17aa03 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 27 Sep 2023 09:52:15 +0800 Subject: [PATCH 5/6] Fix cycle --- models/unittest/testdb.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index 65dc7ec14a35d..f38a63dc5b4b6 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -75,13 +75,18 @@ func MainTest(m *testing.M, testOpts ...*TestOptions) { panic(err) } var found bool + var depth int for { + depth++ file = filepath.Dir(file) exist, _ := util.IsFile(filepath.Join(file, "go.mod")) // Gitea workspace should be only one golang project if exist { found = true break } + if depth > 20 { // only support 20 depth directory structure + break + } } if !found { panic("You cannot run the tests out of a golang repository") From b3d4a0f953aa79abcc2902b30f694b6973eb2579 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Wed, 27 Sep 2023 10:26:46 +0800 Subject: [PATCH 6/6] refactor --- models/unittest/testdb.go | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index f38a63dc5b4b6..6db99cd393e57 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -70,29 +70,22 @@ type TestOptions struct { // 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) { - file, err := os.Getwd() - if err != nil { - panic(err) - } - var found bool - var depth int - for { - depth++ - file = filepath.Dir(file) - exist, _ := util.IsFile(filepath.Join(file, "go.mod")) // Gitea workspace should be only one golang project - if exist { - found = true - break + 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 depth > 20 { // only support 20 depth directory structure - break + if dir := filepath.Dir(searchDir); dir == searchDir { + searchDir = "" // reaches the root of filesystem + } else { + searchDir = dir } } - if !found { - panic("You cannot run the tests out of a golang repository") + if searchDir == "" { + panic("The tests should run in a Gitea repository, there should be a 'go.mod' in the root") } - giteaRoot = file + giteaRoot = searchDir setting.CustomPath = filepath.Join(giteaRoot, "custom") InitSettings() @@ -108,7 +101,7 @@ func MainTest(m *testing.M, testOpts ...*TestOptions) { } } - if err = CreateTestEngine(opts); err != nil { + if err := CreateTestEngine(opts); err != nil { fatalTestError("Error creating test engine: %v\n", err) }