blob: 55aaae6d03daa33edfc5fae16cdf36b3d275eaf6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
|