84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
|
|
package starlog
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"io"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestNewProductionConfig(t *testing.T) {
|
||
|
|
cfg := NewProductionConfig()
|
||
|
|
if cfg.Level != LvInfo {
|
||
|
|
t.Fatalf("production level should be info, got %d", cfg.Level)
|
||
|
|
}
|
||
|
|
if cfg.ShowColor {
|
||
|
|
t.Fatalf("production should disable color")
|
||
|
|
}
|
||
|
|
if cfg.ShowStd {
|
||
|
|
t.Fatalf("production should disable direct std output")
|
||
|
|
}
|
||
|
|
if cfg.Formatter == nil {
|
||
|
|
t.Fatalf("production should set formatter")
|
||
|
|
}
|
||
|
|
if _, ok := cfg.Formatter.(*JSONFormatter); !ok {
|
||
|
|
t.Fatalf("production formatter should be JSONFormatter")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNewDevelopmentConfig(t *testing.T) {
|
||
|
|
cfg := NewDevelopmentConfig()
|
||
|
|
if cfg.Level != LvDebug {
|
||
|
|
t.Fatalf("development level should be debug, got %d", cfg.Level)
|
||
|
|
}
|
||
|
|
if !cfg.ShowColor || !cfg.OnlyColorLevel {
|
||
|
|
t.Fatalf("development should enable level-only color mode")
|
||
|
|
}
|
||
|
|
if !cfg.ShowFuncName || !cfg.ShowOriginFile || !cfg.ShowFlag {
|
||
|
|
t.Fatalf("development should keep rich source fields")
|
||
|
|
}
|
||
|
|
if cfg.Formatter != nil {
|
||
|
|
t.Fatalf("development preset should use built-in text rendering")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestApplyProductionConfigPreservesWriterAndName(t *testing.T) {
|
||
|
|
var buf bytes.Buffer
|
||
|
|
logger := NewStarlog(&buf)
|
||
|
|
logger.SetName("svc")
|
||
|
|
logger.ApplyProductionConfig()
|
||
|
|
|
||
|
|
cfg := logger.GetConfig()
|
||
|
|
if cfg.Name != "svc" {
|
||
|
|
t.Fatalf("apply production should preserve logger name")
|
||
|
|
}
|
||
|
|
if cfg.Writer == nil {
|
||
|
|
t.Fatalf("apply production should preserve writer")
|
||
|
|
}
|
||
|
|
if _, ok := cfg.Formatter.(*JSONFormatter); !ok {
|
||
|
|
t.Fatalf("apply production should set JSON formatter")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestPresetConstructors(t *testing.T) {
|
||
|
|
prod := NewProduction(io.Discard)
|
||
|
|
if prod == nil {
|
||
|
|
t.Fatalf("NewProduction should return logger")
|
||
|
|
}
|
||
|
|
prodCfg := prod.GetConfig()
|
||
|
|
if prodCfg.Level != LvInfo {
|
||
|
|
t.Fatalf("NewProduction should apply production config")
|
||
|
|
}
|
||
|
|
if prodCfg.Writer == nil {
|
||
|
|
t.Fatalf("NewProduction should keep output writer")
|
||
|
|
}
|
||
|
|
|
||
|
|
dev := NewDevelopment(io.Discard)
|
||
|
|
if dev == nil {
|
||
|
|
t.Fatalf("NewDevelopment should return logger")
|
||
|
|
}
|
||
|
|
devCfg := dev.GetConfig()
|
||
|
|
if devCfg.Level != LvDebug {
|
||
|
|
t.Fatalf("NewDevelopment should apply development config")
|
||
|
|
}
|
||
|
|
}
|