aboutsummaryrefslogtreecommitdiff
path: root/tests/test-org-drill-config-source.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-11 22:08:58 -0500
committerCraig Jennings <c@cjennings.net>2026-07-11 22:08:58 -0500
commit904e8885eeb66a48cce281aff23d0f6c754f3c10 (patch)
treec6aa8919db4f1c305a46eeab881653e844de4db5 /tests/test-org-drill-config-source.el
parent198e14ccaaa104ef272a7a16957c91f321a2d372 (diff)
downloaddotemacs-main.tar.gz
dotemacs-main.zip
fix(org-drill-config): fall back to :vc when the dev checkout is absentHEADmain
org-drill-config hard-coded :load-path to ~/code/org-drill with :demand t, so on a machine without that checkout org-drill failed to load and drill broke. cj/--org-drill-source-keywords now picks the source at load time: :load-path when the checkout exists, a :vc install otherwise. The keyword is spliced through eval, since use-package needs a literal at macro-expansion.
Diffstat (limited to 'tests/test-org-drill-config-source.el')
-rw-r--r--tests/test-org-drill-config-source.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/test-org-drill-config-source.el b/tests/test-org-drill-config-source.el
new file mode 100644
index 00000000..ccda99ef
--- /dev/null
+++ b/tests/test-org-drill-config-source.el
@@ -0,0 +1,31 @@
+;;; test-org-drill-config-source.el --- Tests for org-drill source selection -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; cj/--org-drill-source-keywords decides how use-package obtains org-drill:
+;; a local dev checkout via :load-path when it exists, otherwise the upstream
+;; repo via :vc. Without this, a machine lacking the checkout hits :demand t
+;; against a nonexistent :load-path and drill fails to load entirely.
+
+;;; Code:
+
+(require 'ert)
+
+(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
+(require 'org-drill-config)
+
+(ert-deftest test-org-drill-source-keywords-uses-load-path-when-checkout-exists ()
+ "Normal: an existing checkout directory selects :load-path."
+ (let ((dir (make-temp-file "org-drill-checkout-" t)))
+ (unwind-protect
+ (should (equal (cj/--org-drill-source-keywords dir)
+ (list :load-path dir)))
+ (delete-directory dir t))))
+
+(ert-deftest test-org-drill-source-keywords-falls-back-to-vc-when-absent ()
+ "Error: a missing checkout falls back to a :vc install spec."
+ (let ((kws (cj/--org-drill-source-keywords "/nonexistent/org-drill-xyz")))
+ (should (eq (car kws) :vc))
+ (should (plist-get (nth 1 kws) :url))))
+
+(provide 'test-org-drill-config-source)
+;;; test-org-drill-config-source.el ends here