summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorEthan Koenig <ethantkoenig@gmail.com>2018-02-20 23:38:52 -0800
committerLunny Xiao <xiaolunwen@gmail.com>2018-02-21 01:38:52 -0600
commitd27d720f05835dfc4633587aec885ab9b93b5f86 (patch)
tree106419dc3d480db1da8ca9a2f117ab25bf2b607e /models
parent2f5c1ba1db39648e4be9a2905dcec09c45dbb269 (diff)
downloadgitea-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')
-rw-r--r--models/unit_tests.go33
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 {