156 lines
2.9 KiB
Go
156 lines
2.9 KiB
Go
package hlog
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
func TestLogLevel(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
level string
|
|
want Level
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "trace level",
|
|
level: "trace",
|
|
want: zerolog.TraceLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "debug level",
|
|
level: "debug",
|
|
want: zerolog.DebugLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "info level",
|
|
level: "info",
|
|
want: zerolog.InfoLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "warn level",
|
|
level: "warn",
|
|
want: zerolog.WarnLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "error level",
|
|
level: "error",
|
|
want: zerolog.ErrorLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "fatal level",
|
|
level: "fatal",
|
|
want: zerolog.FatalLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "panic level",
|
|
level: "panic",
|
|
want: zerolog.PanicLevel,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "invalid level",
|
|
level: "invalid",
|
|
want: 0,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "empty string",
|
|
level: "",
|
|
want: 0,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "uppercase level (should fail - case sensitive)",
|
|
level: "INFO",
|
|
want: 0,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "mixed case level (should fail - case sensitive)",
|
|
level: "Info",
|
|
want: 0,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "numeric string",
|
|
level: "123",
|
|
want: 0,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "whitespace",
|
|
level: " ",
|
|
want: 0,
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := LogLevel(tt.level)
|
|
|
|
if tt.wantErr {
|
|
if err == nil {
|
|
t.Errorf("LogLevel() expected error but got nil")
|
|
}
|
|
return
|
|
}
|
|
|
|
if err != nil {
|
|
t.Errorf("LogLevel() unexpected error = %v", err)
|
|
return
|
|
}
|
|
|
|
if got != tt.want {
|
|
t.Errorf("LogLevel() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestLogLevel_AllValidLevels(t *testing.T) {
|
|
// Ensure all valid levels are tested
|
|
validLevels := map[string]Level{
|
|
"trace": zerolog.TraceLevel,
|
|
"debug": zerolog.DebugLevel,
|
|
"info": zerolog.InfoLevel,
|
|
"warn": zerolog.WarnLevel,
|
|
"error": zerolog.ErrorLevel,
|
|
"fatal": zerolog.FatalLevel,
|
|
"panic": zerolog.PanicLevel,
|
|
}
|
|
|
|
for levelStr, expectedLevel := range validLevels {
|
|
t.Run("valid_"+levelStr, func(t *testing.T) {
|
|
got, err := LogLevel(levelStr)
|
|
if err != nil {
|
|
t.Errorf("LogLevel(%s) unexpected error = %v", levelStr, err)
|
|
return
|
|
}
|
|
if got != expectedLevel {
|
|
t.Errorf("LogLevel(%s) = %v, want %v", levelStr, got, expectedLevel)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestLogLevel_ErrorMessage(t *testing.T) {
|
|
_, err := LogLevel("invalid")
|
|
if err == nil {
|
|
t.Fatal("LogLevel() expected error but got nil")
|
|
}
|
|
|
|
expectedMsg := "Invalid log level specified."
|
|
if err.Error() != expectedMsg {
|
|
t.Errorf("LogLevel() error message = %v, want %v", err.Error(), expectedMsg)
|
|
}
|
|
}
|