starlog/newline_test.go

72 lines
1.9 KiB
Go
Raw Normal View History

2026-03-19 16:37:57 +08:00
package starlog
import (
"bytes"
"strings"
"testing"
)
func TestAutoAppendNewlineDefaultOff(t *testing.T) {
var buf bytes.Buffer
logger := newStructuredTestLogger(&buf)
logger.Infof("hello %d", 1)
got := buf.String()
if strings.HasSuffix(got, "\n") {
t.Fatalf("default behavior should keep no trailing newline for Infof, got %q", got)
}
}
func TestAutoAppendNewlineForInfof(t *testing.T) {
var buf bytes.Buffer
logger := newStructuredTestLogger(&buf)
logger.SetAutoAppendNewline(true)
logger.Infof("hello %d", 2)
got := buf.String()
if !strings.HasSuffix(got, "\n") {
t.Fatalf("Infof should auto append trailing newline when enabled, got %q", got)
}
if strings.Count(got, "\n") != 1 {
t.Fatalf("Infof should append only one newline, got %q", got)
}
}
func TestAutoAppendNewlineNoDoubleForInfoln(t *testing.T) {
var buf bytes.Buffer
logger := newStructuredTestLogger(&buf)
logger.SetAutoAppendNewline(true)
logger.Infoln("line")
got := buf.String()
if strings.Count(got, "\n") != 1 {
t.Fatalf("Infoln should keep single newline with auto append enabled, got %q", got)
}
}
func TestAutoAppendNewlineForWritef(t *testing.T) {
var buf bytes.Buffer
logger := newStructuredTestLogger(&buf)
logger.SetAutoAppendNewline(true)
logger.Writef("raw-%d", 3)
got := buf.String()
if got != "raw-3\n" {
t.Fatalf("Writef should auto append newline when enabled, got %q", got)
}
}
func TestAutoAppendNewlineConfigApply(t *testing.T) {
var buf bytes.Buffer
logger := newStructuredTestLogger(&buf)
cfg := logger.GetConfig()
if cfg.AutoAppendNewline {
t.Fatalf("default AutoAppendNewline should be false")
}
cfg.AutoAppendNewline = true
logger.ApplyConfig(cfg)
if !logger.GetAutoAppendNewline() {
t.Fatalf("AutoAppendNewline should be true after ApplyConfig")
}
logger.Infof("cfg")
if !strings.HasSuffix(buf.String(), "\n") {
t.Fatalf("Infof should append newline after config apply")
}
}