From 873269cdea6a0c93f7eb25acabce8b72f8be6126 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Fri, 6 Mar 2026 20:40:23 -0600 Subject: test(gptel): add unit tests for ai-config, remove dead cj/gptel-backends - Add testutil-ai-config.el with gptel stubs for batch testing - Add tests for cj/gptel--model-to-string (9 tests) - Add tests for cj/gptel--fresh-org-prefix (8 tests) - Add tests for cj/gptel-backend-and-model (8 tests) - Remove dead cj/gptel-backends defvar (duplicates cj/gptel--available-backends) Co-Authored-By: Claude Opus 4.6 --- tests/testutil-ai-config.el | 74 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tests/testutil-ai-config.el (limited to 'tests/testutil-ai-config.el') diff --git a/tests/testutil-ai-config.el b/tests/testutil-ai-config.el new file mode 100644 index 00000000..4839efd5 --- /dev/null +++ b/tests/testutil-ai-config.el @@ -0,0 +1,74 @@ +;;; testutil-ai-config.el --- Test stubs for ai-config.el tests -*- lexical-binding: t; -*- + +;;; Commentary: +;; Provides gptel and dependency stubs so ai-config.el can be loaded in +;; batch mode without the real gptel package. Must be required BEFORE +;; ai-config so stubs are in place when use-package :config runs. + +;;; Code: + +;; Pre-cache API keys so auth-source is never consulted +(defvar cj/anthropic-api-key-cached "test-anthropic-key") +(defvar cj/openai-api-key-cached "test-openai-key") + +;; Stub gptel variables (must exist before use-package :custom runs) +(defvar gptel-backend nil) +(defvar gptel-model nil) +(defvar gptel-mode nil) +(defvar gptel-prompt-prefix-alist nil) +(defvar gptel--debug nil) +(defvar gptel-default-mode nil) +(defvar gptel-expert-commands nil) +(defvar gptel-track-media nil) +(defvar gptel-include-reasoning nil) +(defvar gptel-log-level nil) +(defvar gptel-confirm-tool-calls nil) +(defvar gptel-directives nil) +(defvar gptel--system-message nil) +(defvar gptel-context--alist nil) +(defvar gptel-mode-map (make-sparse-keymap)) +(defvar gptel-post-response-functions nil) + +;; Stub gptel functions +(defun gptel-make-anthropic (name &rest _args) + "Stub: return a vector mimicking a gptel backend struct." + (vector 'cl-struct-gptel-backend name)) + +(defun gptel-make-openai (name &rest _args) + "Stub: return a vector mimicking a gptel backend struct." + (vector 'cl-struct-gptel-backend name)) + +(defun gptel-send (&rest _) "Stub." nil) +(defun gptel-menu (&rest _) "Stub." nil) +(defun gptel (&rest _) "Stub." nil) +(defun gptel-system-prompt (&rest _) "Stub." nil) +(defun gptel-rewrite (&rest _) "Stub." nil) +(defun gptel-add-file (&rest _) "Stub." nil) +(defun gptel-add (&rest _) "Stub." nil) +(defun gptel-backend-models (_backend) "Stub." nil) + +(provide 'gptel) +(provide 'gptel-context) + +;; Stub custom keymap (defined in user's keybinding config) +(defvar cj/custom-keymap (make-sparse-keymap)) + +;; Stub which-key +(unless (fboundp 'which-key-add-key-based-replacements) + (defun which-key-add-key-based-replacements (&rest _) "Stub." nil)) +(provide 'which-key) + +;; Stub gptel-prompts +(defun gptel-prompts-update (&rest _) "Stub." nil) +(defun gptel-prompts-add-update-watchers (&rest _) "Stub." nil) +(provide 'gptel-prompts) + +;; Stub gptel-magit +(defun gptel-magit-install (&rest _) "Stub." nil) +(provide 'gptel-magit) + +;; Stub ai-conversations +(provide 'ai-conversations) + +(provide 'testutil-ai-config) +;;; testutil-ai-config.el ends here -- cgit v1.2.3