Use a struct as test options (#19393)

* Use a struct as test options

* Fix name

* Fix test
This commit is contained in:
Lunny Xiao 2022-04-14 21:58:21 +08:00 committed by GitHub
parent 4dabc212c7
commit b8911fb456
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
40 changed files with 210 additions and 100 deletions

View File

@ -12,7 +12,8 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
"notice.yml", GiteaRootPath: filepath.Join("..", ".."),
) FixtureFiles: []string{"notice.yml"},
})
} }

View File

@ -18,12 +18,15 @@ func init() {
} }
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"gpg_key.yml", "gpg_key.yml",
"public_key.yml", "public_key.yml",
"deploy_key.yml", "deploy_key.yml",
"gpg_key_import.yml", "gpg_key_import.yml",
"user.yml", "user.yml",
"email_address.yml", "email_address.yml",
) },
})
} }

View File

@ -12,11 +12,14 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"login_source.yml", "login_source.yml",
"oauth2_application.yml", "oauth2_application.yml",
"oauth2_authorization_code.yml", "oauth2_authorization_code.yml",
"oauth2_grant.yml", "oauth2_grant.yml",
"webauthn_credential.yml", "webauthn_credential.yml",
) },
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }

View File

@ -18,10 +18,13 @@ func init() {
} }
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"reaction.yml", "reaction.yml",
"user.yml", "user.yml",
"repository.yml", "repository.yml",
"milestone.yml", "milestone.yml",
) },
})
} }

View File

@ -37,5 +37,7 @@ func TestFixturesAreConsistent(t *testing.T) {
} }
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, "..") unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: "..",
})
} }

View File

@ -12,7 +12,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"user.yml", "user.yml",
"org_user.yml", "org_user.yml",
"team.yml", "team.yml",
@ -20,5 +22,6 @@ func TestMain(m *testing.M) {
"team_unit.yml", "team_unit.yml",
"team_user.yml", "team_user.yml",
"repository.yml", "repository.yml",
) },
})
} }

View File

@ -14,10 +14,13 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"project.yml", "project.yml",
"project_board.yml", "project_board.yml",
"project_issue.yml", "project_issue.yml",
"repository.yml", "repository.yml",
) },
})
} }

View File

@ -12,7 +12,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"attachment.yml", "attachment.yml",
"repo_archiver.yml", "repo_archiver.yml",
"repository.yml", "repository.yml",
@ -24,5 +26,6 @@ func TestMain(m *testing.M) {
"topic.yml", "topic.yml",
"repo_topic.yml", "repo_topic.yml",
"user.yml", "user.yml",
) },
})
} }

View File

@ -39,19 +39,27 @@ func fatalTestError(fmtStr string, args ...interface{}) {
os.Exit(1) os.Exit(1)
} }
// 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
}
// MainTest a reusable TestMain(..) function for unit tests that need to use a // MainTest a reusable TestMain(..) function for unit tests that need to use a
// test database. Creates the test database, and sets necessary settings. // test database. Creates the test database, and sets necessary settings.
func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) { func MainTest(m *testing.M, testOpts *TestOptions) {
var err error var err error
giteaRoot = pathToGiteaRoot giteaRoot = testOpts.GiteaRootPath
fixturesDir = filepath.Join(pathToGiteaRoot, "models", "fixtures") fixturesDir = filepath.Join(testOpts.GiteaRootPath, "models", "fixtures")
var opts FixturesOptions var opts FixturesOptions
if len(fixtureFiles) == 0 { if len(testOpts.FixtureFiles) == 0 {
opts.Dir = fixturesDir opts.Dir = fixturesDir
} else { } else {
for _, f := range fixtureFiles { for _, f := range testOpts.FixtureFiles {
if len(f) != 0 { if len(f) != 0 {
opts.Files = append(opts.Files, filepath.Join(fixturesDir, f)) opts.Files = append(opts.Files, filepath.Join(fixturesDir, f))
} }
@ -80,8 +88,8 @@ func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) {
fatalTestError("TempDir: %v\n", err) fatalTestError("TempDir: %v\n", err)
} }
setting.AppDataPath = appDataPath setting.AppDataPath = appDataPath
setting.AppWorkPath = pathToGiteaRoot setting.AppWorkPath = testOpts.GiteaRootPath
setting.StaticRootPath = pathToGiteaRoot setting.StaticRootPath = testOpts.GiteaRootPath
setting.GravatarSourceURL, err = url.Parse("https://secure.gravatar.com/avatar/") setting.GravatarSourceURL, err = url.Parse("https://secure.gravatar.com/avatar/")
if err != nil { if err != nil {
fatalTestError("url.Parse: %v\n", err) fatalTestError("url.Parse: %v\n", err)
@ -105,7 +113,7 @@ func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) {
if err = util.RemoveAll(repoRootPath); err != nil { if err = util.RemoveAll(repoRootPath); err != nil {
fatalTestError("util.RemoveAll: %v\n", err) fatalTestError("util.RemoveAll: %v\n", err)
} }
if err = CopyDir(filepath.Join(pathToGiteaRoot, "integrations", "gitea-repositories-meta"), setting.RepoRootPath); err != nil { if err = CopyDir(filepath.Join(testOpts.GiteaRootPath, "integrations", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
fatalTestError("util.CopyDir: %v\n", err) fatalTestError("util.CopyDir: %v\n", err)
} }
@ -129,7 +137,20 @@ func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) {
} }
} }
if testOpts.SetUp != nil {
if err := testOpts.SetUp(); err != nil {
fatalTestError("set up failed: %v\n", err)
}
}
exitStatus := m.Run() exitStatus := m.Run()
if testOpts.TearDown != nil {
if err := testOpts.TearDown(); err != nil {
fatalTestError("tear down failed: %v\n", err)
}
}
if err = util.RemoveAll(repoRootPath); err != nil { if err = util.RemoveAll(repoRootPath); err != nil {
fatalTestError("util.RemoveAll: %v\n", err) fatalTestError("util.RemoveAll: %v\n", err)
} }

View File

@ -12,7 +12,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"email_address.yml", "email_address.yml",
"user_redirect.yml", "user_redirect.yml",
"follow.yml", "follow.yml",
@ -20,5 +22,6 @@ func TestMain(m *testing.M) {
"two_factor.yml", "two_factor.yml",
"oauth2_application.yml", "oauth2_application.yml",
"user.yml", "user.yml",
) },
})
} }

View File

@ -12,5 +12,11 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), "webhook.yml", "hook_task.yml") unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{
"webhook.yml",
"hook_task.yml",
},
})
} }

View File

@ -14,7 +14,10 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", ".."), "") unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
FixtureFiles: []string{""}, // load nothing
})
} }
type testItem1 struct { type testItem1 struct {

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -18,7 +18,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }
func testIndexer(name string, t *testing.T, indexer Indexer) { func testIndexer(name string, t *testing.T, indexer Indexer) {

View File

@ -23,7 +23,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }
func TestBleveSearchIssues(t *testing.T) { func TestBleveSearchIssues(t *testing.T) {

View File

@ -23,7 +23,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }
func TestRepoStatsIndex(t *testing.T) { func TestRepoStatsIndex(t *testing.T) {

View File

@ -18,7 +18,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }
func TestRenameRepoAction(t *testing.T) { func TestRenameRepoAction(t *testing.T) {

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", "..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", "..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -17,7 +17,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }
func TestUploadAttachment(t *testing.T) { func TestUploadAttachment(t *testing.T) {

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -17,7 +17,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }
func timePtr(t time.Time) *time.Time { func timePtr(t time.Time) *time.Time {

View File

@ -17,7 +17,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }
func TestDeleteOrganization(t *testing.T) { func TestDeleteOrganization(t *testing.T) {

View File

@ -13,5 +13,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -21,7 +21,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }
func TestRelease_Create(t *testing.T) { func TestRelease_Create(t *testing.T) {

View File

@ -17,7 +17,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }
func TestArchive_Basic(t *testing.T) { func TestArchive_Basic(t *testing.T) {

View File

@ -16,7 +16,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", "..", ".."),
})
} }
func getExpectedReadmeContentsResponse() *api.ContentsResponse { func getExpectedReadmeContentsResponse() *api.ContentsResponse {

View File

@ -12,5 +12,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -20,7 +20,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }
func TestDeleteUser(t *testing.T) { func TestDeleteUser(t *testing.T) {

View File

@ -14,5 +14,7 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }

View File

@ -20,7 +20,9 @@ import (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
unittest.MainTest(m, filepath.Join("..", "..")) unittest.MainTest(m, &unittest.TestOptions{
GiteaRootPath: filepath.Join("..", ".."),
})
} }
func TestWikiNameToSubURL(t *testing.T) { func TestWikiNameToSubURL(t *testing.T) {