|
146 | 146 | (when (buffer-live-p buffer) |
147 | 147 | (kill-buffer buffer))))) |
148 | 148 |
|
| 149 | +(ert-deftest ai-code-test-mcp-eval-elisp-defaults-to-selected-window-buffer () |
| 150 | + "Eval should use the selected window buffer when no buffer context is given." |
| 151 | + (let ((ai-code-mcp-server-tools nil) |
| 152 | + (ai-code-mcp-debug-tools-enabled t) |
| 153 | + (ai-code-mcp-debug-tools-enable-eval-elisp t) |
| 154 | + (ai-code-mcp--sessions (make-hash-table :test 'equal)) |
| 155 | + (session-id "mcp-eval-session") |
| 156 | + (session-buffer (generate-new-buffer " *ai-code-mcp-session*")) |
| 157 | + (target-buffer (generate-new-buffer " *ai-code-mcp-target*"))) |
| 158 | + (unwind-protect |
| 159 | + (save-window-excursion |
| 160 | + (switch-to-buffer target-buffer) |
| 161 | + (with-current-buffer session-buffer |
| 162 | + (rename-buffer "mcp-session-buffer" t)) |
| 163 | + (with-current-buffer target-buffer |
| 164 | + (rename-buffer "mcp-target-buffer" t)) |
| 165 | + (ai-code-mcp-register-session session-id default-directory session-buffer) |
| 166 | + (let* ((ai-code-mcp--current-session-id session-id) |
| 167 | + (payload |
| 168 | + (ai-code-test-mcp-debug-tools--read-json-payload |
| 169 | + (ai-code-mcp-dispatch |
| 170 | + "tools/call" |
| 171 | + '((name . "eval_elisp") |
| 172 | + (arguments . ((code . "(buffer-name)")))))))) |
| 173 | + (should (equal t (alist-get 'ok payload))) |
| 174 | + (should (equal "\"mcp-target-buffer\"" |
| 175 | + (alist-get 'value_repr payload))))) |
| 176 | + (when (buffer-live-p session-buffer) |
| 177 | + (kill-buffer session-buffer)) |
| 178 | + (when (buffer-live-p target-buffer) |
| 179 | + (kill-buffer target-buffer))))) |
| 180 | + |
149 | 181 | (ert-deftest ai-code-test-mcp-eval-elisp-query-rejects-denied-symbols () |
150 | 182 | "Query evaluation should reject denied symbols before running them." |
151 | 183 | (let ((ai-code-mcp-server-tools nil) |
|
0 commit comments