diff options
-rw-r--r-- | src/gobang.go | 20 | ||||
-rw-r--r-- | tests/gobang.go | 33 |
2 files changed, 40 insertions, 13 deletions
diff --git a/src/gobang.go b/src/gobang.go index a8707a1..fc8e2f0 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -26,13 +26,13 @@ import ( -type logLevel int8 +type LogLevel int8 const ( - LevelNone logLevel = 0 - LevelError logLevel = 1 - LevelWarning logLevel = 2 - LevelInfo logLevel = 3 - LevelDebug logLevel = 4 + LevelNone LogLevel = 0 + LevelError LogLevel = 1 + LevelWarning LogLevel = 2 + LevelInfo LogLevel = 3 + LevelDebug LogLevel = 4 ) @@ -84,7 +84,7 @@ var timeMutex sync.Mutex // Local variables var ( - level logLevel = LevelInfo + level LogLevel = LevelInfo emitMetric bool = true hostname string Version = version @@ -768,7 +768,7 @@ func setLoggerOutput(w io.Writer, args ...any) { ).With(args...)) } -func levelFromString(name string, fallback logLevel) logLevel { +func levelFromString(name string, fallback LogLevel) LogLevel { switch strings.ToUpper(name) { case "NONE": return LevelNone @@ -789,6 +789,10 @@ func setLogLevel() { level = levelFromString(os.Getenv("LOG_LEVEL"), level) } +func SetLevel(l LogLevel) { + level = l +} + func setMetric() { if os.Getenv("NO_METRIC") != "" { emitMetric = false diff --git a/tests/gobang.go b/tests/gobang.go index ef07271..a1e3bb7 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -568,7 +568,7 @@ func test_anyArr() { func testLog( levelName string, - filterLevel logLevel, + filterLevel LogLevel, fn func(string, string, ...any), ) { savedLogger := slog.Default() @@ -627,7 +627,7 @@ func testLog( level = savedLevel } -func testNoLog(filterLevel logLevel, fn func(string, string, ...any)) { +func testNoLog(filterLevel LogLevel, fn func(string, string, ...any)) { savedLogger := slog.Default() savedLevel := level @@ -1113,7 +1113,7 @@ func test_levelFromString() { values := []string { "NONE", "ERROR", "WARNING", "INFO", "DEBUG" } Testing("ok for expected values", func() { for _, s := range values { - var fallback logLevel = 123 + var fallback LogLevel = 123 theLevel := levelFromString(s, fallback) notFallback := theLevel >= LevelNone && @@ -1124,7 +1124,7 @@ func test_levelFromString() { }) Testing("fallback for unexpected values", func() { - var fallback logLevel = 123 + var fallback LogLevel = 123 theLevel := levelFromString(string(Random(10)), fallback) AssertEqual(theLevel, fallback) }) @@ -1136,7 +1136,7 @@ func test_setLogLevel() { const NAME = "LOG_LEVEL" savedEnvvar := os.Getenv(NAME) savedValue := level - var fallbackValue logLevel = 123 + var fallbackValue LogLevel = 123 Testing("noop when envvar is unset", func() { ErrorIf(os.Unsetenv(NAME)) @@ -1169,6 +1169,28 @@ func test_setLogLevel() { level = savedValue } +func test_SetLevel() { + TestStart("SetLevel()") + + savedValue := level + + Testing("the behaviour is a simple assignment", func() { + levels := []LogLevel { + LevelNone, + LevelError, + LevelWarning, + LevelInfo, + LevelDebug, + } + for _, l := range levels { + SetLevel(l) + AssertEqual(l, level) + } + }) + + level = savedValue +} + func test_setMetric() { TestStart("setMetric()") @@ -1271,6 +1293,7 @@ func t4() { test_setLoggerOutput() test_levelFromString() test_setLogLevel() + test_SetLevel() test_setMetric() test_FatalIf() test_Assert() |