Skip to main content
Glama
lsp_tools_test.go2.36 kB
package tools import ( "errors" "strings" "testing" "github.com/mark3labs/mcp-go/mcp" "github.com/hloiseaufcms/mcp-gopls/pkg/lsp/protocol" ) func TestParsePosition(t *testing.T) { args := map[string]any{ "position": map[string]any{ "line": float64(5), "character": float64(12), }, } line, character, err := parsePosition(args) if err != nil { t.Fatalf("parsePosition returned error: %v", err) } if line != 5 || character != 12 { t.Fatalf("unexpected position (%d,%d)", line, character) } } func TestParseRangeArg(t *testing.T) { args := map[string]any{ "range": map[string]any{ "start": map[string]any{"line": float64(1), "character": float64(2)}, "end": map[string]any{"line": float64(3), "character": float64(4)}, }, } rng, err := parseRangeArg(args, "range") if err != nil { t.Fatalf("parseRangeArg returned error: %v", err) } expected := protocol.Range{ Start: protocol.Position{Line: 1, Character: 2}, End: protocol.Position{Line: 3, Character: 4}, } if rng != expected { t.Fatalf("unexpected range %#v", rng) } } func TestGetArguments(t *testing.T) { request := mcp.CallToolRequest{ Params: mcp.CallToolParams{ Arguments: map[string]any{"key": "value"}, }, } args, err := getArguments(request) if err != nil { t.Fatalf("getArguments returned error: %v", err) } if args["key"] != "value" { t.Fatalf("unexpected argument value: %#v", args["key"]) } } func TestCommandFailureResultIncludesStderr(t *testing.T) { tools := NewLSPTools(nil, ".") cmdResult := commandResult{ Command: []string{"go", "test", "./..."}, ExitCode: 2, Stderr: "line 1 failed\nline 2 detail", } result, err := tools.commandFailureResult("", cmdResult, errors.New("exit status 2")) if err != nil { t.Fatalf("commandFailureResult returned error: %v", err) } if !result.IsError { t.Fatal("expected error result") } if len(result.Content) == 0 { t.Fatal("expected text content") } textContent, ok := result.Content[0].(mcp.TextContent) if !ok { t.Fatalf("expected TextContent, got %T", result.Content[0]) } if !strings.Contains(textContent.Text, "line 1 failed") { t.Fatalf("stderr not included in error text: %q", textContent.Text) } if !strings.Contains(textContent.Text, "exit code 2") { t.Fatalf("exit code missing from error text: %q", textContent.Text) } }

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/hloiseaufcms/mcp-gopls'

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