aboutsummaryrefslogtreecommitdiff
path: root/tests/test-flycheck-config-ledger-hook.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-10 01:23:31 -0500
committerCraig Jennings <c@cjennings.net>2026-07-10 01:23:31 -0500
commit55b85754d78f268907ad5fa5be886973bbef921d (patch)
tree6ccbcd28fb9aa0daacd5c278c5d3a965d0d3681f /tests/test-flycheck-config-ledger-hook.el
parentcb1d42de518514b3d3ee07e85c36e26e7570916e (diff)
downloaddotemacs-55b85754d78f268907ad5fa5be886973bbef921d.tar.gz
dotemacs-55b85754d78f268907ad5fa5be886973bbef921d.zip
fix(flycheck): lint ledger buffers, which nothing ever did
flycheck-ledger registers a ledger checker, but a checker only runs where flycheck-mode is on, and flycheck-mode was hooked to sh-mode and emacs-lisp-mode only. There's no global-flycheck-mode. So an unbalanced transaction in a financial file produced no warning at all, while the ledger module's commentary advertised linting. The hook goes in flycheck-config, not ledger-config, so that list stays the one answer to "where is flycheck turned on?". Verified on an unbalanced fixture: flycheck now reports "Transaction does not balance" with the $10.00 remainder, on the right line. I also accepted the whole-buffer sort the audit flagged. ledger-sort-startkey keys on the ISO date alone, and sort-subr is stable, so a save orders by date and leaves same-day transactions where they were typed. The audit note records both.
Diffstat (limited to 'tests/test-flycheck-config-ledger-hook.el')
-rw-r--r--tests/test-flycheck-config-ledger-hook.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/test-flycheck-config-ledger-hook.el b/tests/test-flycheck-config-ledger-hook.el
new file mode 100644
index 00000000..e9444b71
--- /dev/null
+++ b/tests/test-flycheck-config-ledger-hook.el
@@ -0,0 +1,31 @@
+;;; test-flycheck-config-ledger-hook.el --- flycheck reaches ledger buffers -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; `flycheck-ledger' registers a `ledger' checker, but a checker only runs where
+;; `flycheck-mode' is on. Until 2026-07-10 flycheck-config enabled the mode in
+;; `sh-mode' and `emacs-lisp-mode' only, and no `global-flycheck-mode' existed, so
+;; an unbalanced transaction in a ledger file produced no warning at all.
+;;
+;; These tests pin the hook, not the checker. Whether the `ledger' checker itself
+;; works is flycheck-ledger's problem; whether it ever gets a chance to run is ours.
+
+;;; Code:
+
+(require 'ert)
+
+(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
+(require 'flycheck-config)
+
+(ert-deftest test-flycheck-config-enables-flycheck-in-ledger-buffers ()
+ "Normal: opening a ledger buffer turns `flycheck-mode' on.
+Without this, `flycheck-ledger' is loaded, its checker is registered, and
+nothing ever lints a financial file."
+ (should (memq #'flycheck-mode (default-value 'ledger-mode-hook))))
+
+(ert-deftest test-flycheck-config-keeps-its-existing-mode-hooks ()
+ "Boundary: adding ledger doesn't displace the modes flycheck already covered."
+ (should (memq #'flycheck-mode (default-value 'sh-mode-hook)))
+ (should (memq #'flycheck-mode (default-value 'emacs-lisp-mode-hook))))
+
+(provide 'test-flycheck-config-ledger-hook)
+;;; test-flycheck-config-ledger-hook.el ends here