aboutsummaryrefslogtreecommitdiff
path: root/tests/check-deps.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-10 16:36:17 -0500
committerCraig Jennings <c@cjennings.net>2026-05-10 16:36:17 -0500
commit93063d8a35060d5467e2d056bd4496e51f17ddc1 (patch)
tree666a81fdb34e758ffb1a49ab8808d0efcdd1face /tests/check-deps.el
parent08cf28b2b752a9fdad10201484763f1fbb5733b3 (diff)
downloadchime-93063d8a35060d5467e2d056bd4496e51f17ddc1.tar.gz
chime-93063d8a35060d5467e2d056bd4496e51f17ddc1.zip
test: harden test dependency and temp-dir setup
Diffstat (limited to 'tests/check-deps.el')
-rw-r--r--tests/check-deps.el38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/check-deps.el b/tests/check-deps.el
new file mode 100644
index 0000000..0cfa99c
--- /dev/null
+++ b/tests/check-deps.el
@@ -0,0 +1,38 @@
+;;; check-deps.el --- Verify test dependencies are loadable -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2026 Craig Jennings
+
+;;; Commentary:
+
+;; Loaded by tests/Makefile's check-deps target after eask has prepared the
+;; test environment. Keep dependency discovery inside Emacs so package.el,
+;; package-vc, Eask, Nix, and pre-populated load-path setups all work the same
+;; way: a dependency is available if Emacs can require it.
+
+;;; Code:
+
+(when noninteractive
+ (package-initialize))
+
+(defconst chime-check-deps-required-features
+ '(dash alert async org-agenda)
+ "Features required by the Chime test suite.")
+
+(defun chime-check-deps--missing-features ()
+ "Return required test features that cannot be loaded."
+ (let (missing)
+ (dolist (feature chime-check-deps-required-features (nreverse missing))
+ (unless (require feature nil t)
+ (push feature missing)))))
+
+(let ((missing (chime-check-deps--missing-features)))
+ (if missing
+ (progn
+ (message "Missing Emacs Lisp test dependencies: %s"
+ (mapconcat #'symbol-name missing ", "))
+ (message "Run `make setup' from the project root, or make these features available on load-path.")
+ (kill-emacs 1))
+ (message "Required Emacs Lisp dependencies are loadable: %s"
+ (mapconcat #'symbol-name chime-check-deps-required-features ", "))))
+
+;;; check-deps.el ends here