From 80038ae710c3e02cc24369e29f048b1013069b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=8F=E6=96=87?= Date: Thu, 5 Mar 2026 18:42:12 +0800 Subject: [PATCH] test: add TestParseLevel unit test for PICOCLAW_LOG_LEVEL env var Add comprehensive test coverage for the parseLevel function that supports parsing log level from PICOCLAW_LOG_LEVEL environment variable. Co-Authored-By: Claude (MiniMax-M2.5) --- pkg/logger/logger_test.go | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/pkg/logger/logger_test.go b/pkg/logger/logger_test.go index 6e6f8dfa8..50af62187 100644 --- a/pkg/logger/logger_test.go +++ b/pkg/logger/logger_test.go @@ -137,3 +137,52 @@ func TestLoggerHelperFunctions(t *testing.T) { DebugC("test", "Debug with component") WarnF("Warning with fields", map[string]any{"key": "value"}) } + +func TestParseLevel(t *testing.T) { + tests := []struct { + name string + input string + wantLevel LogLevel + wantOk bool + }{ + // Valid cases - uppercase + {"DEBUG uppercase", "DEBUG", DEBUG, true}, + {"INFO uppercase", "INFO", INFO, true}, + {"WARN uppercase", "WARN", WARN, true}, + {"WARNING uppercase", "WARNING", WARN, true}, + {"ERROR uppercase", "ERROR", ERROR, true}, + {"FATAL uppercase", "FATAL", FATAL, true}, + + // Valid cases - lowercase + {"DEBUG lowercase", "debug", DEBUG, true}, + {"INFO lowercase", "info", INFO, true}, + {"WARN lowercase", "warn", WARN, true}, + {"WARNING lowercase", "warning", WARN, true}, + {"ERROR lowercase", "error", ERROR, true}, + {"FATAL lowercase", "fatal", FATAL, true}, + + // Valid cases - mixed case + {"Debug mixed case", "Debug", DEBUG, true}, + {"Info mixed case", "InFo", INFO, true}, + {"Warn mixed case", "WaRn", WARN, true}, + {"Error mixed case", "ErRoR", ERROR, true}, + + // Invalid cases + {"empty string", "", INFO, false}, + {"unknown value", "TRACE", INFO, false}, + {"unknown value 2", "VERBOSE", INFO, false}, + {"invalid value", "invalid", INFO, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + level, ok := parseLevel(tt.input) + if ok != tt.wantOk { + t.Errorf("parseLevel(%q) ok = %v, want %v", tt.input, ok, tt.wantOk) + } + if level != tt.wantLevel { + t.Errorf("parseLevel(%q) level = %v, want %v", tt.input, level, tt.wantLevel) + } + }) + } +}