aboutsummaryrefslogtreecommitdiff
path: root/internal/conf/log_test.go
diff options
context:
space:
mode:
authorᴜɴᴋɴᴡᴏɴ <u@gogs.io>2020-02-29 22:24:20 +0800
committerGitHub <noreply@github.com>2020-02-29 22:24:20 +0800
commit8796df8218aa306f1431c17233fbcc3e0811cc4e (patch)
tree07ba5f0e62ed68064143f029217c82c80f9b652c /internal/conf/log_test.go
parent17ae0ed3eef54d96bd179ff7fec0540cf3024748 (diff)
conf: add unit tests (#5954)
* conf: add tests for utils.go * conf: add tests for static.go * mock os/exec * Run tests on Windows * appveyor: fix gcc not found * computed: add unit tests * log: add unit tests * log: fix tests on Windows * conf: add some tests * Finish adding tests * Cover more cases * Add tests for testutil * Add more tests
Diffstat (limited to 'internal/conf/log_test.go')
-rw-r--r--internal/conf/log_test.go134
1 files changed, 134 insertions, 0 deletions
diff --git a/internal/conf/log_test.go b/internal/conf/log_test.go
new file mode 100644
index 00000000..8d5d2e35
--- /dev/null
+++ b/internal/conf/log_test.go
@@ -0,0 +1,134 @@
+// Copyright 2020 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package conf
+
+import (
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "gopkg.in/ini.v1"
+ log "unknwon.dev/clog/v2"
+)
+
+func Test_initLogConf(t *testing.T) {
+ t.Run("missing configuration section", func(t *testing.T) {
+ f, err := ini.Load([]byte(`
+[log]
+MODE = console
+`))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ got, hasConsole, err := initLogConf(f)
+ assert.NotNil(t, err)
+ assert.Equal(t, `missing configuration section [log.console] for "console" logger`, err.Error())
+ assert.False(t, hasConsole)
+ assert.Nil(t, got)
+ })
+
+ t.Run("no console logger", func(t *testing.T) {
+ f, err := ini.Load([]byte(`
+[log]
+MODE = file
+
+[log.file]
+`))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ got, hasConsole, err := initLogConf(f)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ assert.False(t, hasConsole)
+ assert.NotNil(t, got)
+ })
+
+ f, err := ini.Load([]byte(`
+[log]
+ROOT_PATH = log
+MODE = console, file, slack, discord
+BUFFER_LEN = 50
+LEVEL = trace
+
+[log.console]
+BUFFER_LEN = 10
+
+[log.file]
+LEVEL = INFO
+LOG_ROTATE = true
+DAILY_ROTATE = true
+MAX_SIZE_SHIFT = 20
+MAX_LINES = 1000
+MAX_DAYS = 3
+
+[log.slack]
+LEVEL = Warn
+URL = https://slack.com
+
+[log.discord]
+LEVEL = error
+URL = https://discordapp.com
+USERNAME = yoyo
+`))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ got, hasConsole, err := initLogConf(f)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ logConf := &logConf{
+ RootPath: filepath.Join(WorkDir(), "log"),
+ Modes: []string{
+ log.DefaultConsoleName,
+ log.DefaultFileName,
+ log.DefaultSlackName,
+ log.DefaultDiscordName,
+ },
+ Configs: []*loggerConf{
+ {
+ Buffer: 10,
+ Config: log.ConsoleConfig{
+ Level: log.LevelTrace,
+ },
+ }, {
+ Buffer: 50,
+ Config: log.FileConfig{
+ Level: log.LevelInfo,
+ Filename: filepath.Join(WorkDir(), "log", "gogs.log"),
+ FileRotationConfig: log.FileRotationConfig{
+ Rotate: true,
+ Daily: true,
+ MaxSize: 1 << 20,
+ MaxLines: 1000,
+ MaxDays: 3,
+ },
+ },
+ }, {
+ Buffer: 50,
+ Config: log.SlackConfig{
+ Level: log.LevelWarn,
+ URL: "https://slack.com",
+ },
+ }, {
+ Buffer: 50,
+ Config: log.DiscordConfig{
+ Level: log.LevelError,
+ URL: "https://discordapp.com",
+ Username: "yoyo",
+ },
+ },
+ },
+ }
+ assert.True(t, hasConsole)
+ assert.Equal(t, logConf, got)
+}