aboutsummaryrefslogtreecommitdiff
path: root/tests/check-deps.el
diff options
context:
space:
mode:
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..12b5f60
--- /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 pearl-check-deps-required-features
+ '(request json dash s org)
+ "Features required by the pearl test suite.")
+
+(defun pearl-check-deps--missing-features ()
+ "Return required test features that cannot be loaded."
+ (let (missing)
+ (dolist (feature pearl-check-deps-required-features (nreverse missing))
+ (unless (require feature nil t)
+ (push feature missing)))))
+
+(let ((missing (pearl-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 pearl-check-deps-required-features ", "))))
+
+;;; check-deps.el ends here