;;; 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