package config import ( "log/slog" "os" "testing" ) func TestConfigLogLevelAndDebug(t *testing.T) { os.Setenv("PORT", "9090") defer os.Unsetenv("PORT") // 1. Default info os.Unsetenv("LOG_LEVEL") os.Unsetenv("DEBUG") cfg := Load() if cfg.SlogLevel() != slog.LevelInfo { t.Fatalf("expected LevelInfo, got %v", cfg.SlogLevel()) } // 2. LOG_LEVEL=debug os.Setenv("LOG_LEVEL", "debug") cfg = Load() if cfg.SlogLevel() != slog.LevelDebug { t.Fatalf("expected LevelDebug, got %v", cfg.SlogLevel()) } // 3. LOG_LEVEL=warn os.Setenv("LOG_LEVEL", "warn") cfg = Load() if cfg.SlogLevel() != slog.LevelWarn { t.Fatalf("expected LevelWarn, got %v", cfg.SlogLevel()) } // 4. LOG_LEVEL=error os.Setenv("LOG_LEVEL", "error") cfg = Load() if cfg.SlogLevel() != slog.LevelError { t.Fatalf("expected LevelError, got %v", cfg.SlogLevel()) } // 5. DEBUG=true overrides LOG_LEVEL os.Setenv("LOG_LEVEL", "error") os.Setenv("DEBUG", "true") cfg = Load() if cfg.SlogLevel() != slog.LevelDebug { t.Fatalf("expected LevelDebug when DEBUG=true, got %v", cfg.SlogLevel()) } // 6. DEBUG=1 overrides LOG_LEVEL os.Setenv("DEBUG", "1") cfg = Load() if cfg.SlogLevel() != slog.LevelDebug { t.Fatalf("expected LevelDebug when DEBUG=1, got %v", cfg.SlogLevel()) } os.Unsetenv("DEBUG") os.Unsetenv("LOG_LEVEL") }