diff options
author | Ethan Koenig <ethantkoenig@gmail.com> | 2018-02-20 23:38:52 -0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2018-02-21 01:38:52 -0600 |
commit | d27d720f05835dfc4633587aec885ab9b93b5f86 (patch) | |
tree | 106419dc3d480db1da8ca9a2f117ab25bf2b607e /models/unit_tests.go | |
parent | 2f5c1ba1db39648e4be9a2905dcec09c45dbb269 (diff) | |
download | gitea-d27d720f05835dfc4633587aec885ab9b93b5f86.tar.gz gitea-d27d720f05835dfc4633587aec885ab9b93b5f86.zip |
Use unique temp dirs in unit tests (#3494)
* Use unique temp dirs in unit tests
* Remove temp dirs after tests run
* os.RemoveAll -> removeAllWithRetry
Diffstat (limited to 'models/unit_tests.go')
-rw-r--r-- | models/unit_tests.go | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/models/unit_tests.go b/models/unit_tests.go index 962b1a4944..9013fb9871 100644 --- a/models/unit_tests.go +++ b/models/unit_tests.go @@ -6,6 +6,8 @@ package models import ( "fmt" + "io/ioutil" + "net/url" "os" "path/filepath" "testing" @@ -18,7 +20,6 @@ import ( "github.com/go-xorm/xorm" "github.com/stretchr/testify/assert" "gopkg.in/testfixtures.v2" - "net/url" ) // NonexistentID an ID that will never exist @@ -27,6 +28,11 @@ const NonexistentID = 9223372036854775807 // giteaRoot a path to the gitea root var giteaRoot string +func fatalTestError(fmtStr string, args ...interface{}) { + fmt.Fprintf(os.Stderr, fmtStr, args...) + os.Exit(1) +} + // 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, pathToGiteaRoot string) { @@ -34,25 +40,36 @@ func MainTest(m *testing.M, pathToGiteaRoot string) { giteaRoot = pathToGiteaRoot fixturesDir := filepath.Join(pathToGiteaRoot, "models", "fixtures") if err = createTestEngine(fixturesDir); err != nil { - fmt.Fprintf(os.Stderr, "Error creating test engine: %v\n", err) - os.Exit(1) + fatalTestError("Error creating test engine: %v\n", err) } setting.AppURL = "https://try.gitea.io/" setting.RunUser = "runuser" setting.SSH.Port = 3000 setting.SSH.Domain = "try.gitea.io" - setting.RepoRootPath = filepath.Join(os.TempDir(), "repos") - setting.AppDataPath = filepath.Join(os.TempDir(), "appdata") + setting.RepoRootPath, err = ioutil.TempDir(os.TempDir(), "repos") + if err != nil { + fatalTestError("TempDir: %v\n", err) + } + setting.AppDataPath, err = ioutil.TempDir(os.TempDir(), "appdata") + if err != nil { + fatalTestError("TempDir: %v\n", err) + } setting.AppWorkPath = pathToGiteaRoot setting.StaticRootPath = pathToGiteaRoot setting.GravatarSourceURL, err = url.Parse("https://secure.gravatar.com/avatar/") if err != nil { - fmt.Fprintf(os.Stderr, "Error url.Parse: %v\n", err) - os.Exit(1) + fatalTestError("url.Parse: %v\n", err) } - os.Exit(m.Run()) + exitStatus := m.Run() + if err = removeAllWithRetry(setting.RepoRootPath); err != nil { + fatalTestError("os.RemoveAll: %v\n", err) + } + if err = removeAllWithRetry(setting.AppDataPath); err != nil { + fatalTestError("os.RemoveAll: %v\n", err) + } + os.Exit(exitStatus) } func createTestEngine(fixturesDir string) error { |