summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJesse Hallam <jesse.hallam@gmail.com>2018-03-21 14:27:14 -0400
committerGeorge Goldberg <george@gberg.me>2018-03-21 18:27:14 +0000
commit9d701c704416a1d8648dd2818a8a15c4da99b424 (patch)
tree8ad361400a4435c96b9a82eff96fad8508ad9df8 /app
parentb1b23079c6a49df29b6f27b85e98d6a9b1d3607c (diff)
downloadchat-9d701c704416a1d8648dd2818a8a15c4da99b424.tar.gz
chat-9d701c704416a1d8648dd2818a8a15c4da99b424.tar.bz2
chat-9d701c704416a1d8648dd2818a8a15c4da99b424.zip
Fix various segfaults when running `go test` manually (#8448)
* failing to find i18n shouldn't segfault The server was trying to handle the fact that it couldn't find the i18n directory, by emitting a translated log message... * fix utils.FindDir The attempts to find the directory in the parent or grandparent directory don't work if the current working directory was inside `enterprise`, with `enterprise` itself being a symlink as per the usual developer setup. Recurse to the root of the filesystem, cleaning the path along the way to work around this limitation (and allow tests to be run from an arbitrarily deep nesting level.) Fix corresponding usages to employ filepath.Join. * failing to find html templates shouldn't segfault * fail fast if the test user cannot be created * rework utils.FindDir to retain backwards compatibility
Diffstat (limited to 'app')
-rw-r--r--app/app.go6
-rw-r--r--app/auto_posts.go3
-rw-r--r--app/import_test.go7
-rw-r--r--app/saml.go3
-rw-r--r--app/user.go3
5 files changed, 14 insertions, 8 deletions
diff --git a/app/app.go b/app/app.go
index f5e5dd21e..48e95fb99 100644
--- a/app/app.go
+++ b/app/app.go
@@ -439,7 +439,11 @@ func (a *App) WaitForGoroutines() {
}
func (a *App) HTMLTemplates() *template.Template {
- return a.htmlTemplateWatcher.Templates()
+ if a.htmlTemplateWatcher != nil {
+ return a.htmlTemplateWatcher.Templates()
+ }
+
+ return nil
}
func (a *App) HTTPClient(trustURLs bool) *http.Client {
diff --git a/app/auto_posts.go b/app/auto_posts.go
index 379c74ab7..a2adb9d6c 100644
--- a/app/auto_posts.go
+++ b/app/auto_posts.go
@@ -7,6 +7,7 @@ import (
"bytes"
"io"
"os"
+ "path/filepath"
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/utils"
@@ -43,7 +44,7 @@ func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) {
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
path, _ := utils.FindDir("web/static/images")
- file, err := os.Open(path + "/" + filename)
+ file, err := os.Open(filepath.Join(path, filename))
if err != nil {
return nil, false
}
diff --git a/app/import_test.go b/app/import_test.go
index 6a284f63d..f294c8731 100644
--- a/app/import_test.go
+++ b/app/import_test.go
@@ -4,6 +4,7 @@
package app
import (
+ "path/filepath"
"runtime/debug"
"strings"
"testing"
@@ -370,7 +371,7 @@ func TestImportValidateUserImportData(t *testing.T) {
// Test a valid User with all fields populated.
testsDir, _ := utils.FindDir("tests")
data = UserImportData{
- ProfileImage: ptrStr(testsDir + "test.png"),
+ ProfileImage: ptrStr(filepath.Join(testsDir, "test.png")),
Username: ptrStr("bob"),
Email: ptrStr("bob@example.com"),
AuthService: ptrStr("ldap"),
@@ -1487,7 +1488,7 @@ func TestImportImportUser(t *testing.T) {
username := model.NewId()
testsDir, _ := utils.FindDir("tests")
data = UserImportData{
- ProfileImage: ptrStr(testsDir + "test.png"),
+ ProfileImage: ptrStr(filepath.Join(testsDir, "test.png")),
Username: &username,
Email: ptrStr(model.NewId() + "@example.com"),
Nickname: ptrStr(model.NewId()),
@@ -1543,7 +1544,7 @@ func TestImportImportUser(t *testing.T) {
// Alter all the fields of that user.
data.Email = ptrStr(model.NewId() + "@example.com")
- data.ProfileImage = ptrStr(testsDir + "testgif.gif")
+ data.ProfileImage = ptrStr(filepath.Join(testsDir, "testgif.gif"))
data.AuthService = ptrStr("ldap")
data.AuthData = &username
data.Nickname = ptrStr(model.NewId())
diff --git a/app/saml.go b/app/saml.go
index bd9f647a1..29d5f8772 100644
--- a/app/saml.go
+++ b/app/saml.go
@@ -8,7 +8,6 @@ import (
"mime/multipart"
"net/http"
"os"
-
"path/filepath"
"github.com/mattermost/mattermost-server/model"
@@ -42,7 +41,7 @@ func WriteSamlFile(fileData *multipart.FileHeader) *model.AppError {
defer file.Close()
configDir, _ := utils.FindDir("config")
- out, err := os.Create(configDir + filename)
+ out, err := os.Create(filepath.Join(configDir, filename))
if err != nil {
return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.saving.app_error", nil, err.Error(), http.StatusInternalServerError)
}
diff --git a/app/user.go b/app/user.go
index 7a6dc0b49..8f393038a 100644
--- a/app/user.go
+++ b/app/user.go
@@ -18,6 +18,7 @@ import (
"io/ioutil"
"mime/multipart"
"net/http"
+ "path/filepath"
"strconv"
"strings"
@@ -717,7 +718,7 @@ func CreateProfileImage(username string, userId string, initialFont string) ([]b
initial := string(strings.ToUpper(username)[0])
fontDir, _ := utils.FindDir("fonts")
- fontBytes, err := ioutil.ReadFile(fontDir + initialFont)
+ fontBytes, err := ioutil.ReadFile(filepath.Join(fontDir, initialFont))
if err != nil {
return nil, model.NewAppError("CreateProfileImage", "api.user.create_profile_image.default_font.app_error", nil, err.Error(), http.StatusInternalServerError)
}