diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-05 21:17:25 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-05 21:17:25 +0300 |
| commit | 61137206eb7dd6a3df865591d710923838f59f18 (patch) | |
| tree | 127b4738703547436848e799e91fc87cc19b0c26 /internal/lsp/init_and_trigger_tests.go | |
| parent | b5bbf0f183a39353be0fb469d6aca1c3e03b78d5 (diff) | |
over 80% coverage now
Diffstat (limited to 'internal/lsp/init_and_trigger_tests.go')
| -rw-r--r-- | internal/lsp/init_and_trigger_tests.go | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/internal/lsp/init_and_trigger_tests.go b/internal/lsp/init_and_trigger_tests.go deleted file mode 100644 index cdc907e..0000000 --- a/internal/lsp/init_and_trigger_tests.go +++ /dev/null @@ -1,52 +0,0 @@ -package lsp - -import ( - "bytes" - "encoding/json" - "io" - "log" - "testing" -) - -func TestHandleInitialize_Capabilities(t *testing.T) { - var out bytes.Buffer - s := &Server{logger: log.New(io.Discard, "", 0), docs: make(map[string]*document), out: &out} - s.triggerChars = []string{".", ":"} - req := Request{JSONRPC: "2.0", ID: json.RawMessage("7"), Method: "initialize"} - out.Reset() - s.handleInitialize(req) - resp := captureResponse(t, &out) - var init InitializeResult - b, _ := json.Marshal(resp.Result) - if err := json.Unmarshal(b, &init); err != nil { t.Fatalf("decode init: %v", err) } - if init.Capabilities.CodeActionProvider == nil { t.Fatalf("expected codeActionProvider") } - // CodeActionProvider is any; re-marshal to struct - var cap struct{ ResolveProvider bool `json:"resolveProvider"` } - cb, _ := json.Marshal(init.Capabilities.CodeActionProvider) - _ = json.Unmarshal(cb, &cap) - if !cap.ResolveProvider { t.Fatalf("expected resolveProvider=true") } - if init.Capabilities.CompletionProvider == nil || len(init.Capabilities.CompletionProvider.TriggerCharacters) == 0 { - t.Fatalf("expected trigger characters") } -} - -func TestIsTriggerEvent_Variants(t *testing.T) { - s := newTestServer() - s.triggerChars = []string{".", ":"} - // 1) Manual invoke via context - ctx := struct{ TriggerKind int `json:"triggerKind"` }{TriggerKind:1} - raw, _ := json.Marshal(ctx) - p := CompletionParams{Position: Position{Line:0, Character:1}, Context: json.RawMessage(raw)} - if !s.isTriggerEvent(p, "a") { t.Fatalf("manual invoke should trigger") } - // 2) TriggerCharacter present and allowed - ctx2 := struct{ TriggerKind int `json:"triggerKind"`; TriggerCharacter string `json:"triggerCharacter"` }{TriggerKind:2, TriggerCharacter: "."} - raw2, _ := json.Marshal(ctx2) - p2 := CompletionParams{Position: Position{Line:0, Character:1}, Context: json.RawMessage(raw2)} - if !s.isTriggerEvent(p2, "a.") { t.Fatalf("trigger char should trigger") } - // 3) Fallback char left of cursor - p3 := CompletionParams{Position: Position{Line:0, Character:3}} - if !s.isTriggerEvent(p3, "ab:") { t.Fatalf("fallback char should trigger") } - // 4) Bare ';;' disables trigger - p4 := CompletionParams{Position: Position{Line:0, Character:2}} - if s.isTriggerEvent(p4, ";;") { t.Fatalf("bare ;; should not trigger") } -} - |
