starlog/presets_test.go

84 lines
2.1 KiB
Go
Raw Normal View History

2026-03-19 16:37:57 +08:00
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")
}
}