diff options
| author | Paul Buetow <paul@buetow.org> | 2025-08-28 23:56:28 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-08-28 23:56:28 +0300 |
| commit | 32a72e6533ecf3d4e0c53137692c658b512abcd1 (patch) | |
| tree | 91b05a597974e4da89aa7647dc207e16e1bc94a7 /internal/lsp/llm_busy_test.go | |
| parent | 30d233d689f77d4688a49c6fa221ab63a8482db2 (diff) | |
lsp: limit to one in-flight LLM query; return visible 'LLM busy' completion item with provider/model; retain chat EOL suppression
Diffstat (limited to 'internal/lsp/llm_busy_test.go')
| -rw-r--r-- | internal/lsp/llm_busy_test.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/internal/lsp/llm_busy_test.go b/internal/lsp/llm_busy_test.go new file mode 100644 index 0000000..95123d2 --- /dev/null +++ b/internal/lsp/llm_busy_test.go @@ -0,0 +1,25 @@ +package lsp + +import ( + "encoding/json" + "testing" +) + +// Ensure a visible busy item is returned when a prior LLM request is in flight. +func TestLLMBusy_YieldsBusyCompletionItem(t *testing.T) { + s := &Server{ maxTokens: 32, triggerChars: []string{"."}, compCache: make(map[string]string) } + s.llmClient = &countingLLM{} + // Mark busy + s.setLLMBusy(true) + t.Cleanup(func(){ s.setLLMBusy(false) }) + line := "obj." + p := CompletionParams{ Position: Position{ Line: 0, Character: len(line) }, TextDocument: TextDocumentIdentifier{URI: "file://busy.go"} } + // Simulate manual invoke to bypass min-prefix + p.Context = json.RawMessage([]byte(`{"triggerKind":1}`)) + items, ok := s.tryLLMCompletion(p, "", line, "", "", "", false, "") + if !ok { t.Fatalf("expected ok=true") } + if len(items) != 1 { t.Fatalf("expected one busy item, got %d", len(items)) } + if items[0].InsertText != "" { t.Fatalf("busy item should not insert text") } + if items[0].Label == "" { t.Fatalf("busy item should have a label") } +} + |
