summaryrefslogtreecommitdiff
path: root/internal/lsp/chat_commands_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/lsp/chat_commands_test.go')
-rw-r--r--internal/lsp/chat_commands_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/internal/lsp/chat_commands_test.go b/internal/lsp/chat_commands_test.go
index bedfaed..f9bd6a0 100644
--- a/internal/lsp/chat_commands_test.go
+++ b/internal/lsp/chat_commands_test.go
@@ -80,3 +80,42 @@ func TestHandleReloadCommandReloadsStore(t *testing.T) {
t.Fatalf("expected summary logged, got %q", logBuf.String())
}
}
+
+func TestDetectAndHandleChatExecutesSlashCommand(t *testing.T) {
+ tmp := t.TempDir()
+ configDir := filepath.Join(tmp, "hexai")
+ if err := os.MkdirAll(configDir, 0o755); err != nil {
+ t.Fatalf("mkdir: %v", err)
+ }
+ configPath := filepath.Join(configDir, "config.toml")
+ if err := os.WriteFile(configPath, []byte("[general]\nmax_tokens = 128\n"), 0o644); err != nil {
+ t.Fatalf("write config: %v", err)
+ }
+ t.Setenv("XDG_CONFIG_HOME", tmp)
+ t.Setenv("HEXAI_MAX_TOKENS", "")
+
+ var logBuf bytes.Buffer
+ logger := log.New(&logBuf, "", 0)
+
+ initial := appconfig.Load(logger)
+ store := runtimeconfig.New(initial)
+
+ s := newTestServer()
+ s.logger = logger
+ s.configStore = store
+ var out bytes.Buffer
+ s.out = &out
+
+ uri := "file:///cmd.go"
+ s.setDocument(uri, "/reload>\n")
+
+ s.detectAndHandleChat(uri)
+
+ outStr := out.String()
+ if !strings.Contains(outStr, "Reloaded config") {
+ t.Fatalf("expected reload summary in applyEdit payload, got %q", outStr)
+ }
+ if !strings.Contains(logBuf.String(), "Reloaded config") {
+ t.Fatalf("expected reload summary logged, got %q", logBuf.String())
+ }
+}