diff options
Diffstat (limited to 'tests/check-deps.el')
| -rw-r--r-- | tests/check-deps.el | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/check-deps.el b/tests/check-deps.el new file mode 100644 index 0000000..55aaae6 --- /dev/null +++ b/tests/check-deps.el @@ -0,0 +1,43 @@ +;;; 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. +;; +;; DUET has no third-party runtime dependencies yet; cl-lib is the one feature +;; the core leans on (cl-defstruct lands in Phase 2). The dev tooling +;; (undercover, elisp-lint, package-lint) is verified by the targets that use +;; it, not here. + +;;; Code: + +(when noninteractive + (package-initialize)) + +(defconst duet-check-deps-required-features + '(cl-lib) + "Features required by the duet test suite.") + +(defun duet-check-deps--missing-features () + "Return required test features that cannot be loaded." + (let (missing) + (dolist (feature duet-check-deps-required-features (nreverse missing)) + (unless (require feature nil t) + (push feature missing))))) + +(let ((missing (duet-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 duet-check-deps-required-features ", ")))) + +;;; check-deps.el ends here |
