summaryrefslogtreecommitdiff
path: root/internal/lsp/init_and_trigger_tests.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-09-05 21:17:25 +0300
committerPaul Buetow <paul@buetow.org>2025-09-05 21:17:25 +0300
commit61137206eb7dd6a3df865591d710923838f59f18 (patch)
tree127b4738703547436848e799e91fc87cc19b0c26 /internal/lsp/init_and_trigger_tests.go
parentb5bbf0f183a39353be0fb469d6aca1c3e03b78d5 (diff)
over 80% coverage now
Diffstat (limited to 'internal/lsp/init_and_trigger_tests.go')
-rw-r--r--internal/lsp/init_and_trigger_tests.go52
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") }
-}
-