From d310ce3f52c7114cb4a7bedf607ab940ba154f7c Mon Sep 17 00:00:00 2001 From: zeripath Date: Fri, 10 Dec 2021 19:43:28 +0000 Subject: [PATCH] Prevent services/mailer/mailer_test.go tests from deleteing data directory (#17941) Running `make test-backend` will delete `data/` due to reloading the configuration and resetting the appdatapath. This PR removes this unnecessary config reload but also adds extra code in to the unittest main to prevent its cleanup from deleting the wrong directory. Signed-off-by: Andrew Thornton --- models/migrations/migrations_test.go | 11 ++++++++++- models/unittest/testdb.go | 12 +++++++----- services/mailer/mailer_test.go | 13 ++++++------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/models/migrations/migrations_test.go b/models/migrations/migrations_test.go index 2effcb99ebc6c..10ba3dde09597 100644 --- a/models/migrations/migrations_test.go +++ b/models/migrations/migrations_test.go @@ -8,6 +8,7 @@ import ( "context" "database/sql" "fmt" + "io/ioutil" "os" "path" "path/filepath" @@ -57,6 +58,14 @@ func TestMain(m *testing.M) { setting.CustomConf = giteaConf } + tmpDataPath, err := ioutil.TempDir("", "data") + if err != nil { + fmt.Printf("Unable to create temporary data path %v\n", err) + os.Exit(1) + } + + setting.AppDataPath = tmpDataPath + setting.SetCustomPathAndConf("", "", "") setting.LoadForTest() git.CheckLFSVersion() @@ -68,7 +77,7 @@ func TestMain(m *testing.M) { if err := removeAllWithRetry(setting.RepoRootPath); err != nil { fmt.Fprintf(os.Stderr, "os.RemoveAll: %v\n", err) } - if err := removeAllWithRetry(setting.AppDataPath); err != nil { + if err := removeAllWithRetry(tmpDataPath); err != nil { fmt.Fprintf(os.Stderr, "os.RemoveAll: %v\n", err) } os.Exit(exitStatus) diff --git a/models/unittest/testdb.go b/models/unittest/testdb.go index 94c93755e0bd6..8083c607e5d5c 100644 --- a/models/unittest/testdb.go +++ b/models/unittest/testdb.go @@ -67,14 +67,16 @@ func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) { setting.SSH.Port = 3000 setting.SSH.Domain = "try.gitea.io" setting.Database.UseSQLite3 = true - setting.RepoRootPath, err = os.MkdirTemp(os.TempDir(), "repos") + repoRootPath, err := os.MkdirTemp(os.TempDir(), "repos") if err != nil { fatalTestError("TempDir: %v\n", err) } - setting.AppDataPath, err = os.MkdirTemp(os.TempDir(), "appdata") + setting.RepoRootPath = repoRootPath + appDataPath, err := os.MkdirTemp(os.TempDir(), "appdata") if err != nil { fatalTestError("TempDir: %v\n", err) } + setting.AppDataPath = appDataPath setting.AppWorkPath = pathToGiteaRoot setting.StaticRootPath = pathToGiteaRoot setting.GravatarSourceURL, err = url.Parse("https://secure.gravatar.com/avatar/") @@ -95,7 +97,7 @@ func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) { fatalTestError("storage.Init: %v\n", err) } - if err = util.RemoveAll(setting.RepoRootPath); err != nil { + if err = util.RemoveAll(repoRootPath); err != nil { fatalTestError("util.RemoveAll: %v\n", err) } if err = util.CopyDir(filepath.Join(pathToGiteaRoot, "integrations", "gitea-repositories-meta"), setting.RepoRootPath); err != nil { @@ -103,10 +105,10 @@ func MainTest(m *testing.M, pathToGiteaRoot string, fixtureFiles ...string) { } exitStatus := m.Run() - if err = util.RemoveAll(setting.RepoRootPath); err != nil { + if err = util.RemoveAll(repoRootPath); err != nil { fatalTestError("util.RemoveAll: %v\n", err) } - if err = util.RemoveAll(setting.AppDataPath); err != nil { + if err = util.RemoveAll(appDataPath); err != nil { fatalTestError("util.RemoveAll: %v\n", err) } os.Exit(exitStatus) diff --git a/services/mailer/mailer_test.go b/services/mailer/mailer_test.go index 8505803d22a24..1739a68a64414 100644 --- a/services/mailer/mailer_test.go +++ b/services/mailer/mailer_test.go @@ -9,17 +9,16 @@ import ( "time" "code.gitea.io/gitea/modules/setting" - "github.com/stretchr/testify/assert" ) func TestGenerateMessageID(t *testing.T) { - setting.LoadForTest(` -[mailer] -ENABLED = true -FROM = test@domain.com -`) - setting.NewServices() + var mailService = setting.Mailer{ + From: "test@gitea.com", + } + + setting.MailService = &mailService + setting.Domain = "localhost" date := time.Date(2000, 01, 02, 03, 04, 05, 06, time.UTC) m := NewMessageFrom(nil, "display-name", "from-address", "subject", "body")