diff options
Diffstat (limited to 'tests/test-prog-c-mode-settings.el')
| -rw-r--r-- | tests/test-prog-c-mode-settings.el | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/test-prog-c-mode-settings.el b/tests/test-prog-c-mode-settings.el new file mode 100644 index 00000000..eef2d910 --- /dev/null +++ b/tests/test-prog-c-mode-settings.el @@ -0,0 +1,52 @@ +;;; test-prog-c-mode-settings.el --- Tests for cj/c-mode-settings -*- lexical-binding: t; -*- + +;;; Commentary: +;; Verifies the C mode hook applies the documented buffer-local values and +;; only calls `lsp-deferred' when both the function and clangd are available. + +;;; Code: + +(require 'cl-lib) +(require 'ert) + +(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) +(require 'prog-c) + +(ert-deftest test-prog-c-mode-settings-normal-applies-buffer-locals () + "Normal: cj/c-mode-settings applies the documented buffer-local values." + (with-temp-buffer + (cl-letf (((symbol-function 'auto-fill-mode) (lambda (&rest _) nil)) + ((symbol-function 'electric-pair-mode) (lambda (&rest _) nil)) + ((symbol-function 'lsp-deferred) (lambda (&rest _) nil)) + ((symbol-function 'executable-find) (lambda (_) nil))) + (cj/c-mode-settings)) + (should (eq indent-tabs-mode nil)) + (should (= c-basic-offset 4)) + (should (= tab-width 4)) + (should (= fill-column 80)) + (should comment-auto-fill-only-comments))) + +(ert-deftest test-prog-c-mode-settings-boundary-lsp-available-deferred () + "Boundary: when lsp-deferred is fbound and clangd is on PATH, lsp-deferred is called." + (let ((lsp-calls 0)) + (with-temp-buffer + (cl-letf (((symbol-function 'auto-fill-mode) (lambda (&rest _) nil)) + ((symbol-function 'electric-pair-mode) (lambda (&rest _) nil)) + ((symbol-function 'lsp-deferred) (lambda () (cl-incf lsp-calls))) + ((symbol-function 'executable-find) (lambda (_) "/usr/bin/clangd"))) + (cj/c-mode-settings))) + (should (= lsp-calls 1)))) + +(ert-deftest test-prog-c-mode-settings-error-clangd-missing-skips-lsp () + "Error: when clangd is not on PATH, lsp-deferred is NOT called." + (let ((lsp-calls 0)) + (with-temp-buffer + (cl-letf (((symbol-function 'auto-fill-mode) (lambda (&rest _) nil)) + ((symbol-function 'electric-pair-mode) (lambda (&rest _) nil)) + ((symbol-function 'lsp-deferred) (lambda () (cl-incf lsp-calls))) + ((symbol-function 'executable-find) (lambda (_) nil))) + (cj/c-mode-settings))) + (should (zerop lsp-calls)))) + +(provide 'test-prog-c-mode-settings) +;;; test-prog-c-mode-settings.el ends here |
