67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package logging
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"path/filepath"
|
|
"regexp"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestLogLevelString(t *testing.T) {
|
|
assert.Equal(t, "DBG", DBG.String())
|
|
assert.Equal(t, "INF", INF.String())
|
|
assert.Equal(t, "WRN", WRN.String())
|
|
assert.Equal(t, "ERR", ERR.String())
|
|
assert.Equal(t, "99", LogLevel(99).String())
|
|
}
|
|
|
|
func TestCreateLogger_NoFile(t *testing.T) {
|
|
logger := CreateLogger(DBG, INF, "", "2006-01-02 15:04:05.000", "2006-01-02_15-04-05")
|
|
assert.NotNil(t, logger)
|
|
assert.Nil(t, logger.file)
|
|
assert.Equal(t, DBG, logger.maxFileLevel)
|
|
assert.Equal(t, INF, logger.maxDisplayedLevel)
|
|
}
|
|
|
|
func TestCreateLogger_WithFile(t *testing.T) {
|
|
dir := t.TempDir()
|
|
path := filepath.Join(dir, "test.log")
|
|
logger := CreateLogger(DBG, DBG, path, "2006-01-02 15:04:05.000", "2006-01-02_15-04-05")
|
|
assert.NotNil(t, logger)
|
|
assert.NotNil(t, logger.file)
|
|
}
|
|
|
|
func TestLoggerMethods(t *testing.T) {
|
|
buf := &bytes.Buffer{}
|
|
logger := &Logger{
|
|
file: nil,
|
|
timestampFormat: DefaultTimeFormat,
|
|
maxFileLevel: DBG,
|
|
maxDisplayedLevel: DBG,
|
|
}
|
|
oldStdout := os.Stdout
|
|
r, w, _ := os.Pipe()
|
|
os.Stdout = w
|
|
logger.Debug("debug message")
|
|
logger.Info("info message")
|
|
logger.Warn("warn message")
|
|
logger.Error("error message")
|
|
w.Close()
|
|
os.Stdout = oldStdout
|
|
buf.ReadFrom(r)
|
|
output := buf.String()
|
|
assert.Contains(t, output, "debug message")
|
|
assert.Contains(t, output, "info message")
|
|
assert.Contains(t, output, "warn message")
|
|
assert.Contains(t, output, "error message")
|
|
}
|
|
|
|
func TestAnsiStripRegex(t *testing.T) {
|
|
input := "\033[31mHello\033[0m"
|
|
re := regexp.MustCompile(`\x1b\[[0-9;]*m`)
|
|
output := re.ReplaceAllString(input, "")
|
|
assert.Equal(t, "Hello", output)
|
|
}
|