Skip to main content
Glama
logger_test.go2.86 kB
package logging import ( "bytes" "maps" "strings" "testing" ) func TestLogger(t *testing.T) { // Save original writer to restore after test originalWriter := Writer originalLevels := make(map[Component]LogLevel) maps.Copy(originalLevels, ComponentLevels) // Set up a buffer to capture logs var buf bytes.Buffer SetWriter(&buf) // Reset buffer and log levels after test defer func() { SetWriter(originalWriter) maps.Copy(ComponentLevels, originalLevels) }() // Test different log levels tests := []struct { name string component Component componentLevel LogLevel logFunc func(Logger) level LogLevel shouldLog bool }{ { name: "Debug message with Debug level", component: Core, componentLevel: LevelDebug, logFunc: func(l Logger) { l.Debug("test debug message") }, level: LevelDebug, shouldLog: true, }, { name: "Debug message with Info level", component: Core, componentLevel: LevelInfo, logFunc: func(l Logger) { l.Debug("test debug message") }, level: LevelDebug, shouldLog: false, }, { name: "Info message with Info level", component: LSP, componentLevel: LevelInfo, logFunc: func(l Logger) { l.Info("test info message") }, level: LevelInfo, shouldLog: true, }, { name: "Warn message with Error level", component: Watcher, componentLevel: LevelError, logFunc: func(l Logger) { l.Warn("test warn message") }, level: LevelWarn, shouldLog: false, }, { name: "Error message with Error level", component: Tools, componentLevel: LevelError, logFunc: func(l Logger) { l.Error("test error message") }, level: LevelError, shouldLog: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { // Reset buffer buf.Reset() // Set component log level SetLevel(tt.component, tt.componentLevel) // Create logger and log message logger := NewLogger(tt.component) tt.logFunc(logger) // Check if message was logged loggedMessage := buf.String() if tt.shouldLog && loggedMessage == "" { t.Errorf("Expected log message but got none") } else if !tt.shouldLog && loggedMessage != "" { t.Errorf("Expected no log message but got: %s", loggedMessage) } // When log should appear, check if it contains expected parts if tt.shouldLog { if !strings.Contains(loggedMessage, tt.level.String()) { t.Errorf("Log message missing level '%s': %s", tt.level, loggedMessage) } if !strings.Contains(loggedMessage, string(tt.component)) { t.Errorf("Log message missing component '%s': %s", tt.component, loggedMessage) } } }) } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/isaacphi/mcp-language-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server