Adding go vet from hack-a-thon (#5328)

* Adding go vet to the api package

* Adding go vet to app package

* Adding go vet to manualtesting package

* Adding go vet to the model package

* Adding go vet to the store dir

* Adding go vet to utils package

* Adding missing dirs with go files

* Fixing up makefile

* Fixing up makefile

* Removing root dir
Этот коммит содержится в:
Corey Hulen
2017-02-09 13:39:15 -08:00
коммит произвёл George Goldberg
родитель 432dc9239f
Коммит 1359f7f391
22 изменённых файлов: 134 добавлений и 108 удалений

Просмотреть файл

@@ -1,4 +1,4 @@
.PHONY: build package run stop run-client run-server stop-client stop-server restart restart-server restart-client start-docker clean-dist clean nuke check-style check-client-style check-server-style check-unit-tests test dist setup-mac prepare-enteprise run-client-tests setup-run-client-tests cleanup-run-client-tests test-client build-linux build-osx build-windows internal-test-client .PHONY: build package run stop run-client run-server stop-client stop-server restart restart-server restart-client start-docker clean-dist clean nuke check-style check-client-style check-server-style check-unit-tests test dist setup-mac prepare-enteprise run-client-tests setup-run-client-tests cleanup-run-client-tests test-client build-linux build-osx build-windows internal-test-client vet
# For golang 1.5.x compatibility (remove when we don't want to support it anymore) # For golang 1.5.x compatibility (remove when we don't want to support it anymore)
export GO15VENDOREXPERIMENT=1 export GO15VENDOREXPERIMENT=1
@@ -183,7 +183,7 @@ check-client-style:
cd $(BUILD_WEBAPP_DIR) && $(MAKE) check-style cd $(BUILD_WEBAPP_DIR) && $(MAKE) check-style
check-server-style: check-server-style: govet
@echo Running GOFMT @echo Running GOFMT
$(eval GOFMT_OUTPUT := $(shell gofmt -d -s api/ model/ store/ utils/ manualtesting/ einterfaces/ cmd/platform/ 2>&1)) $(eval GOFMT_OUTPUT := $(shell gofmt -d -s api/ model/ store/ utils/ manualtesting/ einterfaces/ cmd/platform/ 2>&1))
@echo "$(GOFMT_OUTPUT)" @echo "$(GOFMT_OUTPUT)"
@@ -467,6 +467,36 @@ nuke: clean clean-docker
setup-mac: setup-mac:
echo $$(boot2docker ip 2> /dev/null) dockerhost | sudo tee -a /etc/hosts echo $$(boot2docker ip 2> /dev/null) dockerhost | sudo tee -a /etc/hosts
govet:
@echo Running GOVET
$(GO) vet $(GOFLAGS) ./api || exit 1
$(GO) vet $(GOFLAGS) ./api4 || exit 1
$(GO) vet $(GOFLAGS) ./app || exit 1
$(GO) vet $(GOFLAGS) ./cmd/platform || exit 1
$(GO) vet $(GOFLAGS) ./einterfaces || exit 1
$(GO) vet $(GOFLAGS) ./manualtesting || exit 1
$(GO) vet $(GOFLAGS) ./model || exit 1
$(GO) vet $(GOFLAGS) ./model/gitlab || exit 1
$(GO) vet $(GOFLAGS) ./store || exit 1
$(GO) vet $(GOFLAGS) ./utils || exit 1
$(GO) vet $(GOFLAGS) ./web || exit 1
ifeq ($(BUILD_ENTERPRISE_READY),true)
$(GO) vet $(GOFLAGS) ./enterprise || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/account_migration || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/brand || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/cluster || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/compliance || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/emoji || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/ldap || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/metrics || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/mfa || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/oauth/google || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/oauth/office365 || exit 1
$(GO) vet $(GOFLAGS) ./enterprise/saml || exit 1
endif
todo: todo:
@ag --ignore Makefile --ignore-dir vendor --ignore-dir runtime --ignore-dir webapp/non_npm_dependencies/ TODO @ag --ignore Makefile --ignore-dir vendor --ignore-dir runtime --ignore-dir webapp/non_npm_dependencies/ TODO
@ag --ignore Makefile --ignore-dir vendor --ignore-dir runtime --ignore-dir webapp/non_npm_dependencies/ XXX @ag --ignore Makefile --ignore-dir vendor --ignore-dir runtime --ignore-dir webapp/non_npm_dependencies/ XXX

Просмотреть файл

@@ -22,15 +22,15 @@ const (
) )
var ( var (
TEAM_NAME_LEN = utils.Range{10, 20} TEAM_NAME_LEN = utils.Range{Begin: 10, End: 20}
TEAM_DOMAIN_NAME_LEN = utils.Range{10, 20} TEAM_DOMAIN_NAME_LEN = utils.Range{Begin: 10, End: 20}
TEAM_EMAIL_LEN = utils.Range{15, 30} TEAM_EMAIL_LEN = utils.Range{Begin: 15, End: 30}
USER_NAME_LEN = utils.Range{5, 20} USER_NAME_LEN = utils.Range{Begin: 5, End: 20}
USER_EMAIL_LEN = utils.Range{15, 30} USER_EMAIL_LEN = utils.Range{Begin: 15, End: 30}
CHANNEL_DISPLAY_NAME_LEN = utils.Range{10, 20} CHANNEL_DISPLAY_NAME_LEN = utils.Range{Begin: 10, End: 20}
CHANNEL_NAME_LEN = utils.Range{5, 20} CHANNEL_NAME_LEN = utils.Range{Begin: 5, End: 20}
POST_MESSAGE_LEN = utils.Range{100, 400} POST_MESSAGE_LEN = utils.Range{Begin: 100, End: 400}
POST_HASHTAGS_NUM = utils.Range{5, 10} POST_HASHTAGS_NUM = utils.Range{Begin: 5, End: 10}
POST_MENTIONS_NUM = utils.Range{0, 3} POST_MENTIONS_NUM = utils.Range{Begin: 0, End: 3}
TEST_IMAGE_FILENAMES = []string{"test.png", "testjpg.jpg", "testgif.gif"} TEST_IMAGE_FILENAMES = []string{"test.png", "testjpg.jpg", "testgif.gif"}
) )

Просмотреть файл

@@ -84,7 +84,7 @@ func CreateTestEnvironmentInTeam(client *model.Client, team *model.Team, rangeCh
numPosts := utils.RandIntFromRange(rangePosts) numPosts := utils.RandIntFromRange(rangePosts)
numImages := utils.RandIntFromRange(rangePosts) / 4 numImages := utils.RandIntFromRange(rangePosts) / 4
for j := 0; j < numPosts; j++ { for j := 0; j < numPosts; j++ {
user := users[utils.RandIntFromRange(utils.Range{0, len(users) - 1})] user := users[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(users) - 1})]
client.LoginById(user.Id, USER_PASSWORD) client.LoginById(user.Id, USER_PASSWORD)
for i, channel := range channels { for i, channel := range channels {
postCreator := NewAutoPostCreator(client, channel.Id) postCreator := NewAutoPostCreator(client, channel.Id)

Просмотреть файл

@@ -29,17 +29,17 @@ func NewAutoPostCreator(client *model.Client, channelid string) *AutoPostCreator
client: client, client: client,
channelid: channelid, channelid: channelid,
Fuzzy: false, Fuzzy: false,
TextLength: utils.Range{100, 200}, TextLength: utils.Range{Begin: 100, End: 200},
HasImage: false, HasImage: false,
ImageFilenames: TEST_IMAGE_FILENAMES, ImageFilenames: TEST_IMAGE_FILENAMES,
Users: []string{}, Users: []string{},
Mentions: utils.Range{0, 5}, Mentions: utils.Range{Begin: 0, End: 5},
Tags: utils.Range{0, 7}, Tags: utils.Range{Begin: 0, End: 7},
} }
} }
func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) { func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) {
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{0, len(cfg.ImageFilenames) - 1})] filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
path := utils.FindDir("web/static/images") path := utils.FindDir("web/static/images")
file, err := os.Open(path + "/" + filename) file, err := os.Open(path + "/" + filename)

Просмотреть файл

@@ -81,7 +81,7 @@ func (cfg *AutoUserCreator) createRandomUser() (*model.User, bool) {
ruser := result.Data.(*model.User) ruser := result.Data.(*model.User)
status := &model.Status{ruser.Id, model.STATUS_ONLINE, false, model.GetMillis(), ""} status := &model.Status{UserId: ruser.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
if result := <-app.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil { if result := <-app.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
result.Err.Translate(utils.T) result.Err.Translate(utils.T)
l4g.Error(result.Err.Error()) l4g.Error(result.Err.Error())

Просмотреть файл

@@ -169,10 +169,10 @@ func (me *LoadTestProvider) SetupCommand(c *Context, channelId string, message s
client.Login(BTEST_USER_EMAIL, BTEST_USER_PASSWORD) client.Login(BTEST_USER_EMAIL, BTEST_USER_PASSWORD)
environment, err := CreateTestEnvironmentWithTeams( environment, err := CreateTestEnvironmentWithTeams(
client, client,
utils.Range{numTeams, numTeams}, utils.Range{Begin: numTeams, End: numTeams},
utils.Range{numChannels, numChannels}, utils.Range{Begin: numChannels, End: numChannels},
utils.Range{numUsers, numUsers}, utils.Range{Begin: numUsers, End: numUsers},
utils.Range{numPosts, numPosts}, utils.Range{Begin: numPosts, End: numPosts},
doFuzz) doFuzz)
if err != true { if err != true {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
@@ -197,9 +197,9 @@ func (me *LoadTestProvider) SetupCommand(c *Context, channelId string, message s
CreateTestEnvironmentInTeam( CreateTestEnvironmentInTeam(
client, client,
team, team,
utils.Range{numChannels, numChannels}, utils.Range{Begin: numChannels, End: numChannels},
utils.Range{numUsers, numUsers}, utils.Range{Begin: numUsers, End: numUsers},
utils.Range{numPosts, numPosts}, utils.Range{Begin: numPosts, End: numPosts},
doFuzz) doFuzz)
} }
@@ -217,7 +217,7 @@ func (me *LoadTestProvider) UsersCommand(c *Context, channelId string, message s
usersr, err := parseRange(cmd, "") usersr, err := parseRange(cmd, "")
if err == false { if err == false {
usersr = utils.Range{2, 5} usersr = utils.Range{Begin: 2, End: 5}
} }
var team *model.Team var team *model.Team
@@ -247,7 +247,7 @@ func (me *LoadTestProvider) ChannelsCommand(c *Context, channelId string, messag
channelsr, err := parseRange(cmd, "") channelsr, err := parseRange(cmd, "")
if err == false { if err == false {
channelsr = utils.Range{2, 5} channelsr = utils.Range{Begin: 2, End: 5}
} }
var team *model.Team var team *model.Team
@@ -278,14 +278,14 @@ func (me *LoadTestProvider) PostsCommand(c *Context, channelId string, message s
postsr, err := parseRange(cmd, "") postsr, err := parseRange(cmd, "")
if err == false { if err == false {
postsr = utils.Range{20, 30} postsr = utils.Range{Begin: 20, End: 30}
} }
tokens := strings.Fields(cmd) tokens := strings.Fields(cmd)
rimages := utils.Range{0, 0} rimages := utils.Range{Begin: 0, End: 0}
if len(tokens) >= 3 { if len(tokens) >= 3 {
if numImages, err := strconv.Atoi(tokens[2]); err == nil { if numImages, err := strconv.Atoi(tokens[2]); err == nil {
rimages = utils.Range{numImages, numImages} rimages = utils.Range{Begin: numImages, End: numImages}
} }
} }
@@ -415,18 +415,18 @@ func parseRange(command string, cmd string) (utils.Range, bool) {
begin, err1 = strconv.Atoi(tokens[0]) begin, err1 = strconv.Atoi(tokens[0])
end = begin end = begin
if err1 != nil { if err1 != nil {
return utils.Range{0, 0}, false return utils.Range{Begin: 0, End: 0}, false
} }
case len(tokens) >= 2: case len(tokens) >= 2:
begin, err1 = strconv.Atoi(tokens[0]) begin, err1 = strconv.Atoi(tokens[0])
end, err2 = strconv.Atoi(tokens[1]) end, err2 = strconv.Atoi(tokens[1])
if err1 != nil || err2 != nil { if err1 != nil || err2 != nil {
return utils.Range{0, 0}, false return utils.Range{Begin: 0, End: 0}, false
} }
default: default:
return utils.Range{0, 0}, false return utils.Range{Begin: 0, End: 0}, false
} }
return utils.Range{begin, end}, true return utils.Range{Begin: begin, End: end}, true
} }
func contains(items []string, token string) bool { func contains(items []string, token string) bool {

Просмотреть файл

@@ -31,16 +31,16 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
if name == "standard" { if name == "standard" {
var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 10) var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 10)
rows[0] = &model.AnalyticsRow{"channel_open_count", 0} rows[0] = &model.AnalyticsRow{Name: "channel_open_count", Value: 0}
rows[1] = &model.AnalyticsRow{"channel_private_count", 0} rows[1] = &model.AnalyticsRow{Name: "channel_private_count", Value: 0}
rows[2] = &model.AnalyticsRow{"post_count", 0} rows[2] = &model.AnalyticsRow{Name: "post_count", Value: 0}
rows[3] = &model.AnalyticsRow{"unique_user_count", 0} rows[3] = &model.AnalyticsRow{Name: "unique_user_count", Value: 0}
rows[4] = &model.AnalyticsRow{"team_count", 0} rows[4] = &model.AnalyticsRow{Name: "team_count", Value: 0}
rows[5] = &model.AnalyticsRow{"total_websocket_connections", 0} rows[5] = &model.AnalyticsRow{Name: "total_websocket_connections", Value: 0}
rows[6] = &model.AnalyticsRow{"total_master_db_connections", 0} rows[6] = &model.AnalyticsRow{Name: "total_master_db_connections", Value: 0}
rows[7] = &model.AnalyticsRow{"total_read_db_connections", 0} rows[7] = &model.AnalyticsRow{Name: "total_read_db_connections", Value: 0}
rows[8] = &model.AnalyticsRow{"daily_active_users", 0} rows[8] = &model.AnalyticsRow{Name: "daily_active_users", Value: 0}
rows[9] = &model.AnalyticsRow{"monthly_active_users", 0} rows[9] = &model.AnalyticsRow{Name: "monthly_active_users", Value: 0}
openChan := Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN) openChan := Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN)
privateChan := Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE) privateChan := Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE)
@@ -139,7 +139,7 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
return rows, nil return rows, nil
} else if name == "post_counts_day" { } else if name == "post_counts_day" {
if skipIntensiveQueries { if skipIntensiveQueries {
rows := model.AnalyticsRows{&model.AnalyticsRow{"", -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
@@ -150,7 +150,7 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
} }
} else if name == "user_counts_with_posts_day" { } else if name == "user_counts_with_posts_day" {
if skipIntensiveQueries { if skipIntensiveQueries {
rows := model.AnalyticsRows{&model.AnalyticsRow{"", -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
@@ -161,12 +161,12 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
} }
} else if name == "extra_counts" { } else if name == "extra_counts" {
var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 6) var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 6)
rows[0] = &model.AnalyticsRow{"file_post_count", 0} rows[0] = &model.AnalyticsRow{Name: "file_post_count", Value: 0}
rows[1] = &model.AnalyticsRow{"hashtag_post_count", 0} rows[1] = &model.AnalyticsRow{Name: "hashtag_post_count", Value: 0}
rows[2] = &model.AnalyticsRow{"incoming_webhook_count", 0} rows[2] = &model.AnalyticsRow{Name: "incoming_webhook_count", Value: 0}
rows[3] = &model.AnalyticsRow{"outgoing_webhook_count", 0} rows[3] = &model.AnalyticsRow{Name: "outgoing_webhook_count", Value: 0}
rows[4] = &model.AnalyticsRow{"command_count", 0} rows[4] = &model.AnalyticsRow{Name: "command_count", Value: 0}
rows[5] = &model.AnalyticsRow{"session_count", 0} rows[5] = &model.AnalyticsRow{Name: "session_count", Value: 0}
iHookChan := Srv.Store.Webhook().AnalyticsIncomingCount(teamId) iHookChan := Srv.Store.Webhook().AnalyticsIncomingCount(teamId)
oHookChan := Srv.Store.Webhook().AnalyticsOutgoingCount(teamId) oHookChan := Srv.Store.Webhook().AnalyticsOutgoingCount(teamId)

Просмотреть файл

@@ -805,7 +805,7 @@ func GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
func SetActiveChannel(userId string, channelId string) *model.AppError { func SetActiveChannel(userId string, channelId string) *model.AppError {
status, err := GetStatus(userId) status, err := GetStatus(userId)
if err != nil { if err != nil {
status = &model.Status{userId, model.STATUS_ONLINE, false, model.GetMillis(), channelId} status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: channelId}
} else { } else {
status.ActiveChannel = channelId status.ActiveChannel = channelId
if !status.Manual { if !status.Manual {

Просмотреть файл

@@ -513,7 +513,7 @@ func TestImportImportTeam(t *testing.T) {
// Check that one more team is in the DB. // Check that one more team is in the DB.
if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil { if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
if r.Data.(int64)-1 != teamsCount { if r.Data.(int64)-1 != teamsCount {
t.Fatalf("Team did not get saved in apply run mode.", r.Data.(int64), teamsCount) t.Fatalf("Team did not get saved in apply run mode. analytics=%v teamcount=%v", r.Data.(int64), teamsCount)
} }
} else { } else {
t.Fatalf("Failed to get team count.") t.Fatalf("Failed to get team count.")
@@ -542,7 +542,7 @@ func TestImportImportTeam(t *testing.T) {
if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil { if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
if r.Data.(int64)-1 != teamsCount { if r.Data.(int64)-1 != teamsCount {
t.Fatalf("Team alterations did not get saved in apply run mode.", r.Data.(int64), teamsCount) t.Fatalf("Team alterations did not get saved in apply run mode. analytics=%v teamcount=%v", r.Data.(int64), teamsCount)
} }
} else { } else {
t.Fatalf("Failed to get team count.") t.Fatalf("Failed to get team count.")

Просмотреть файл

@@ -241,7 +241,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
var status *model.Status var status *model.Status
var err *model.AppError var err *model.AppError
if status, err = GetStatus(id); err != nil { if status, err = GetStatus(id); err != nil {
status = &model.Status{id, model.STATUS_OFFLINE, false, 0, ""} status = &model.Status{UserId: id, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
} }
if DoesStatusAllowPushNotification(profileMap[id], status, post.ChannelId) { if DoesStatusAllowPushNotification(profileMap[id], status, post.ChannelId) {
@@ -254,7 +254,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
var status *model.Status var status *model.Status
var err *model.AppError var err *model.AppError
if status, err = GetStatus(id); err != nil { if status, err = GetStatus(id); err != nil {
status = &model.Status{id, model.STATUS_OFFLINE, false, 0, ""} status = &model.Status{UserId: id, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
} }
if DoesStatusAllowPushNotification(profileMap[id], status, post.ChannelId) { if DoesStatusAllowPushNotification(profileMap[id], status, post.ChannelId) {

Просмотреть файл

@@ -100,7 +100,7 @@ func SetStatusOnline(userId string, sessionId string, manual bool) {
var err *model.AppError var err *model.AppError
if status, err = GetStatus(userId); err != nil { if status, err = GetStatus(userId); err != nil {
status = &model.Status{userId, model.STATUS_ONLINE, false, model.GetMillis(), ""} status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
broadcast = true broadcast = true
} else { } else {
if status.Manual && !manual { if status.Manual && !manual {
@@ -157,7 +157,7 @@ func SetStatusOffline(userId string, manual bool) {
return // manually set status always overrides non-manual one return // manually set status always overrides non-manual one
} }
status = &model.Status{userId, model.STATUS_OFFLINE, manual, model.GetMillis(), ""} status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
AddStatusCache(status) AddStatusCache(status)
@@ -175,7 +175,7 @@ func SetStatusAwayIfNeeded(userId string, manual bool) {
status, err := GetStatus(userId) status, err := GetStatus(userId)
if err != nil { if err != nil {
status = &model.Status{userId, model.STATUS_OFFLINE, manual, 0, ""} status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: 0, ActiveChannel: ""}
} }
if !manual && status.Manual { if !manual && status.Manual {

Просмотреть файл

@@ -307,11 +307,9 @@ func IsUsernameTaken(name string) bool {
if result := <-Srv.Store.User().GetByUsername(name); result.Err != nil { if result := <-Srv.Store.User().GetByUsername(name); result.Err != nil {
return false return false
} else {
return true
} }
return false return true
} }
func GetUser(userId string) (*model.User, *model.AppError) { func GetUser(userId string) (*model.User, *model.AppError) {

Просмотреть файл

@@ -67,7 +67,7 @@ func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
// Create team for testing // Create team for testing
team := &model.Team{ team := &model.Team{
DisplayName: teamDisplayName[0], DisplayName: teamDisplayName[0],
Name: utils.RandomName(utils.Range{20, 20}, utils.LOWERCASE), Name: utils.RandomName(utils.Range{Begin: 20, End: 20}, utils.LOWERCASE),
Email: "success+" + model.NewId() + "simulator.amazonses.com", Email: "success+" + model.NewId() + "simulator.amazonses.com",
Type: model.TEAM_OPEN, Type: model.TEAM_OPEN,
} }

Просмотреть файл

@@ -14,8 +14,8 @@ type ScheduledTask struct {
Name string `json:"name"` Name string `json:"name"`
Interval time.Duration `json:"interval"` Interval time.Duration `json:"interval"`
Recurring bool `json:"recurring"` Recurring bool `json:"recurring"`
function TaskFunc `json:",omitempty"` function TaskFunc
timer *time.Timer `json:",omitempty"` timer *time.Timer
} }
var tasks = make(map[string]*ScheduledTask) var tasks = make(map[string]*ScheduledTask)

Просмотреть файл

@@ -46,25 +46,25 @@ func TestUserUpdateMentionKeysFromUsername(t *testing.T) {
user.SetDefaultNotifications() user.SetDefaultNotifications()
if user.NotifyProps["mention_keys"] != "user,@user" { if user.NotifyProps["mention_keys"] != "user,@user" {
t.Fatal("default mention keys are invalid: %v", user.NotifyProps["mention_keys"]) t.Fatalf("default mention keys are invalid: %v", user.NotifyProps["mention_keys"])
} }
user.Username = "person" user.Username = "person"
user.UpdateMentionKeysFromUsername("user") user.UpdateMentionKeysFromUsername("user")
if user.NotifyProps["mention_keys"] != "person,@person" { if user.NotifyProps["mention_keys"] != "person,@person" {
t.Fatal("mention keys are invalid after changing username: %v", user.NotifyProps["mention_keys"]) t.Fatalf("mention keys are invalid after changing username: %v", user.NotifyProps["mention_keys"])
} }
user.NotifyProps["mention_keys"] += ",mention" user.NotifyProps["mention_keys"] += ",mention"
user.UpdateMentionKeysFromUsername("person") user.UpdateMentionKeysFromUsername("person")
if user.NotifyProps["mention_keys"] != "person,@person,mention" { if user.NotifyProps["mention_keys"] != "person,@person,mention" {
t.Fatal("mention keys are invalid after adding extra mention keyword: %v", user.NotifyProps["mention_keys"]) t.Fatalf("mention keys are invalid after adding extra mention keyword: %v", user.NotifyProps["mention_keys"])
} }
user.Username = "user" user.Username = "user"
user.UpdateMentionKeysFromUsername("person") user.UpdateMentionKeysFromUsername("person")
if user.NotifyProps["mention_keys"] != "user,@user,mention" { if user.NotifyProps["mention_keys"] != "user,@user,mention" {
t.Fatal("mention keys are invalid after changing username with extra mention keyword: %v", user.NotifyProps["mention_keys"]) t.Fatalf("mention keys are invalid after changing username with extra mention keyword: %v", user.NotifyProps["mention_keys"])
} }
} }

Просмотреть файл

@@ -41,7 +41,7 @@ type AppError struct {
StatusCode int `json:"status_code,omitempty"` // The http status code StatusCode int `json:"status_code,omitempty"` // The http status code
Where string `json:"-"` // The function where it happened in the form of Struct.Func Where string `json:"-"` // The function where it happened in the form of Struct.Func
IsOAuth bool `json:"is_oauth,omitempty"` // Whether the error is OAuth specific IsOAuth bool `json:"is_oauth,omitempty"` // Whether the error is OAuth specific
params map[string]interface{} `json:"-"` params map[string]interface{}
} }
func (er *AppError) Error() string { func (er *AppError) Error() string {

Просмотреть файл

@@ -34,7 +34,7 @@ func TestAppError(t *testing.T) {
t.Fatal() t.Fatal()
} }
err.Error() t.Log(err.Error())
} }
func TestAppErrorJunk(t *testing.T) { func TestAppErrorJunk(t *testing.T) {

Просмотреть файл

@@ -1062,9 +1062,9 @@ func TestGetMemberCount(t *testing.T) {
Must(store.Channel().SaveMember(&m1)) Must(store.Channel().SaveMember(&m1))
if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil { if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil {
t.Fatal("failed to get member count: %v", result.Err) t.Fatalf("failed to get member count: %v", result.Err)
} else if result.Data.(int64) != 1 { } else if result.Data.(int64) != 1 {
t.Fatal("got incorrect member count %v", result.Data) t.Fatalf("got incorrect member count %v", result.Data)
} }
u2 := model.User{ u2 := model.User{
@@ -1082,9 +1082,9 @@ func TestGetMemberCount(t *testing.T) {
Must(store.Channel().SaveMember(&m2)) Must(store.Channel().SaveMember(&m2))
if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil { if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil {
t.Fatal("failed to get member count: %v", result.Err) t.Fatalf("failed to get member count: %v", result.Err)
} else if result.Data.(int64) != 2 { } else if result.Data.(int64) != 2 {
t.Fatal("got incorrect member count %v", result.Data) t.Fatalf("got incorrect member count %v", result.Data)
} }
// make sure members of other channels aren't counted // make sure members of other channels aren't counted
@@ -1103,9 +1103,9 @@ func TestGetMemberCount(t *testing.T) {
Must(store.Channel().SaveMember(&m3)) Must(store.Channel().SaveMember(&m3))
if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil { if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil {
t.Fatal("failed to get member count: %v", result.Err) t.Fatalf("failed to get member count: %v", result.Err)
} else if result.Data.(int64) != 2 { } else if result.Data.(int64) != 2 {
t.Fatal("got incorrect member count %v", result.Data) t.Fatalf("got incorrect member count %v", result.Data)
} }
// make sure inactive users aren't counted // make sure inactive users aren't counted
@@ -1124,9 +1124,9 @@ func TestGetMemberCount(t *testing.T) {
Must(store.Channel().SaveMember(&m4)) Must(store.Channel().SaveMember(&m4))
if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil { if result := <-store.Channel().GetMemberCount(c1.Id, false); result.Err != nil {
t.Fatal("failed to get member count: %v", result.Err) t.Fatalf("failed to get member count: %v", result.Err)
} else if result.Data.(int64) != 2 { } else if result.Data.(int64) != 2 {
t.Fatal("got incorrect member count %v", result.Data) t.Fatalf("got incorrect member count %v", result.Data)
} }
} }
@@ -1169,14 +1169,14 @@ func TestUpdateExtrasByUser(t *testing.T) {
Must(store.User().Update(u1, true)) Must(store.User().Update(u1, true))
if result := <-store.Channel().ExtraUpdateByUser(u1.Id, u1.DeleteAt); result.Err != nil { if result := <-store.Channel().ExtraUpdateByUser(u1.Id, u1.DeleteAt); result.Err != nil {
t.Fatal("failed to update extras by user: %v", result.Err) t.Fatalf("failed to update extras by user: %v", result.Err)
} }
u1.DeleteAt = 0 u1.DeleteAt = 0
Must(store.User().Update(u1, true)) Must(store.User().Update(u1, true))
if result := <-store.Channel().ExtraUpdateByUser(u1.Id, u1.DeleteAt); result.Err != nil { if result := <-store.Channel().ExtraUpdateByUser(u1.Id, u1.DeleteAt); result.Err != nil {
t.Fatal("failed to update extras by user: %v", result.Err) t.Fatalf("failed to update extras by user: %v", result.Err)
} }
} }

Просмотреть файл

@@ -12,7 +12,7 @@ import (
func TestSqlStatusStore(t *testing.T) { func TestSqlStatusStore(t *testing.T) {
Setup() Setup()
status := &model.Status{model.NewId(), model.STATUS_ONLINE, false, 0, ""} status := &model.Status{UserId: model.NewId(), Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
if err := (<-store.Status().SaveOrUpdate(status)).Err; err != nil { if err := (<-store.Status().SaveOrUpdate(status)).Err; err != nil {
t.Fatal(err) t.Fatal(err)
@@ -28,12 +28,12 @@ func TestSqlStatusStore(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
status2 := &model.Status{model.NewId(), model.STATUS_AWAY, false, 0, ""} status2 := &model.Status{UserId: model.NewId(), Status: model.STATUS_AWAY, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
if err := (<-store.Status().SaveOrUpdate(status2)).Err; err != nil { if err := (<-store.Status().SaveOrUpdate(status2)).Err; err != nil {
t.Fatal(err) t.Fatal(err)
} }
status3 := &model.Status{model.NewId(), model.STATUS_OFFLINE, false, 0, ""} status3 := &model.Status{UserId: model.NewId(), Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
if err := (<-store.Status().SaveOrUpdate(status3)).Err; err != nil { if err := (<-store.Status().SaveOrUpdate(status3)).Err; err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -90,7 +90,7 @@ func TestSqlStatusStore(t *testing.T) {
func TestActiveUserCount(t *testing.T) { func TestActiveUserCount(t *testing.T) {
Setup() Setup()
status := &model.Status{model.NewId(), model.STATUS_ONLINE, false, model.GetMillis(), ""} status := &model.Status{UserId: model.NewId(), Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
Must(store.Status().SaveOrUpdate(status)) Must(store.Status().SaveOrUpdate(status))
if result := <-store.Status().GetTotalActiveUsersCount(); result.Err != nil { if result := <-store.Status().GetTotalActiveUsersCount(); result.Err != nil {

Просмотреть файл

@@ -220,7 +220,8 @@ func (ss *SqlStore) TotalReadDbConnections() int {
if len(utils.Cfg.SqlSettings.DataSourceReplicas) == 0 { if len(utils.Cfg.SqlSettings.DataSourceReplicas) == 0 {
return 0 return 0
} else { }
count := 0 count := 0
for _, db := range ss.replicas { for _, db := range ss.replicas {
count = count + db.Db.Stats().OpenConnections count = count + db.Db.Stats().OpenConnections
@@ -229,9 +230,6 @@ func (ss *SqlStore) TotalReadDbConnections() int {
return count return count
} }
return 0
}
func (ss *SqlStore) GetCurrentSchemaVersion() string { func (ss *SqlStore) GetCurrentSchemaVersion() string {
version, _ := ss.GetMaster().SelectStr("SELECT Value FROM Systems WHERE Name='Version'") version, _ := ss.GetMaster().SelectStr("SELECT Value FROM Systems WHERE Name='Version'")
return version return version
@@ -722,7 +720,7 @@ func (me mattermConverter) FromDb(target interface{}) (gorp.CustomScanner, bool)
b := []byte(*s) b := []byte(*s)
return json.Unmarshal(b, target) return json.Unmarshal(b, target)
} }
return gorp.CustomScanner{new(string), target, binder}, true return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *model.StringArray: case *model.StringArray:
binder := func(holder, target interface{}) error { binder := func(holder, target interface{}) error {
s, ok := holder.(*string) s, ok := holder.(*string)
@@ -732,7 +730,7 @@ func (me mattermConverter) FromDb(target interface{}) (gorp.CustomScanner, bool)
b := []byte(*s) b := []byte(*s)
return json.Unmarshal(b, target) return json.Unmarshal(b, target)
} }
return gorp.CustomScanner{new(string), target, binder}, true return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *model.EncryptStringMap: case *model.EncryptStringMap:
binder := func(holder, target interface{}) error { binder := func(holder, target interface{}) error {
s, ok := holder.(*string) s, ok := holder.(*string)
@@ -748,7 +746,7 @@ func (me mattermConverter) FromDb(target interface{}) (gorp.CustomScanner, bool)
b := []byte(ue) b := []byte(ue)
return json.Unmarshal(b, target) return json.Unmarshal(b, target)
} }
return gorp.CustomScanner{new(string), target, binder}, true return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *model.StringInterface: case *model.StringInterface:
binder := func(holder, target interface{}) error { binder := func(holder, target interface{}) error {
s, ok := holder.(*string) s, ok := holder.(*string)
@@ -758,7 +756,7 @@ func (me mattermConverter) FromDb(target interface{}) (gorp.CustomScanner, bool)
b := []byte(*s) b := []byte(*s)
return json.Unmarshal(b, target) return json.Unmarshal(b, target)
} }
return gorp.CustomScanner{new(string), target, binder}, true return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
} }
return gorp.CustomScanner{}, false return gorp.CustomScanner{}, false

Просмотреть файл

@@ -1103,7 +1103,7 @@ func TestUserStoreGetRecentlyActiveUsersForTeam(t *testing.T) {
u1 := &model.User{} u1 := &model.User{}
u1.Email = model.NewId() u1.Email = model.NewId()
Must(store.User().Save(u1)) Must(store.User().Save(u1))
Must(store.Status().SaveOrUpdate(&model.Status{u1.Id, model.STATUS_ONLINE, false, model.GetMillis(), ""})) Must(store.Status().SaveOrUpdate(&model.Status{UserId: u1.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}))
tid := model.NewId() tid := model.NewId()
Must(store.Team().SaveMember(&model.TeamMember{TeamId: tid, UserId: u1.Id})) Must(store.Team().SaveMember(&model.TeamMember{TeamId: tid, UserId: u1.Id}))

Просмотреть файл

@@ -104,8 +104,8 @@ func SendMailUsingConfig(to, subject, body string, config *model.Config) *model.
l4g.Debug(T("utils.mail.send_mail.sending.debug"), to, subject) l4g.Debug(T("utils.mail.send_mail.sending.debug"), to, subject)
fromMail := mail.Address{config.EmailSettings.FeedbackName, config.EmailSettings.FeedbackEmail} fromMail := mail.Address{Name: config.EmailSettings.FeedbackName, Address: config.EmailSettings.FeedbackEmail}
toMail := mail.Address{"", to} toMail := mail.Address{Name: "", Address: to}
headers := make(map[string]string) headers := make(map[string]string)
headers["From"] = fromMail.String() headers["From"] = fromMail.String()