Files
karma/internal/log/log_test.go
2026-03-13 17:18:40 +00:00

81 lines
2.1 KiB
Go

package log
import (
"log/slog"
"testing"
)
func TestParseLevel(t *testing.T) {
testCases := []struct {
input string
expected slog.Level
hasError bool
}{
{input: "debug", expected: slog.LevelDebug, hasError: false},
{input: "info", expected: slog.LevelInfo, hasError: false},
{input: "warning", expected: slog.LevelWarn, hasError: false},
{input: "error", expected: slog.LevelError, hasError: false},
{input: "unknown", expected: slog.LevelInfo, hasError: true},
{input: "", expected: slog.LevelInfo, hasError: true},
}
for _, tc := range testCases {
t.Run(tc.input, func(t *testing.T) {
level, err := ParseLevel(tc.input)
if tc.hasError && err == nil {
t.Errorf("ParseLevel(%q) expected error, got nil", tc.input)
}
if !tc.hasError && err != nil {
t.Errorf("ParseLevel(%q) unexpected error: %v", tc.input, err)
}
if level != tc.expected {
t.Errorf("ParseLevel(%q) = %v, want %v", tc.input, level, tc.expected)
}
})
}
}
func TestSetLevel(t *testing.T) {
testCases := []slog.Level{
slog.LevelDebug,
slog.LevelInfo,
slog.LevelWarn,
slog.LevelError,
}
for _, level := range testCases {
t.Run(level.String(), func(t *testing.T) {
SetLevel(level)
if Level.Level() != level {
t.Errorf("SetLevel(%v) resulted in Level=%v", level, Level.Level())
}
})
}
}
func TestSetupLogger(t *testing.T) {
testCases := []struct {
format string
timestamps bool
hasError bool
}{
{format: "text", timestamps: false, hasError: false},
{format: "text", timestamps: true, hasError: false},
{format: "json", timestamps: false, hasError: false},
{format: "json", timestamps: true, hasError: false},
{format: "invalid", timestamps: false, hasError: true},
}
for _, tc := range testCases {
t.Run(tc.format, func(t *testing.T) {
err := SetupLogger(tc.format, tc.timestamps)
if tc.hasError && err == nil {
t.Errorf("SetupLogger(%q, %v) expected error, got nil", tc.format, tc.timestamps)
}
if !tc.hasError && err != nil {
t.Errorf("SetupLogger(%q, %v) unexpected error: %v", tc.format, tc.timestamps, err)
}
})
}
}