package main
import (
"log/slog"
"testing"
)
func TestBuildLogger_ValidLevels(t *testing.T) {
for _, level := range []string{"debug", "info", "warn", "error"} {
for _, format := range []string{"tint", "json", "human"} {
logger, err := buildLogger(level, format)
if err != nil {
t.Fatalf("buildLogger(%q, %q) unexpected error: %v", level, format, err)
}
if logger == nil {
t.Fatalf("buildLogger(%q, %q) returned nil logger", level, format)
}
}
}
}
func TestBuildLogger_InvalidLevel(t *testing.T) {
_, err := buildLogger("fatal", "json")
if err == nil {
t.Fatal("expected error for invalid level")
}
}
func TestBuildLogger_InvalidFormat(t *testing.T) {
_, err := buildLogger("info", "xml")
if err == nil {
t.Fatal("expected error for invalid format")
}
}
func TestBuildLogger_LevelEnforced(t *testing.T) {
logger, err := buildLogger("error", "human")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if logger.Enabled(nil, slog.LevelInfo) {
t.Fatal("error-level logger should not enable info")
}
if !logger.Enabled(nil, slog.LevelError) {
t.Fatal("error-level logger should enable error")
}
}
func TestBuildParsers_RegistersSupportedTools(t *testing.T) {
parsers := buildParsers("laptop")
for _, tool := range []string{"claude-code", "opencode"} {
p, ok := parsers[tool]
if !ok {
t.Fatalf("parser %q is not registered", tool)
}
if got := p.Tool(); got != tool {
t.Fatalf("parser %q Tool() = %q", tool, got)
}
}
}