diff options
Diffstat (limited to 'tests/test-bootstrap.el')
| -rw-r--r-- | tests/test-bootstrap.el | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/test-bootstrap.el b/tests/test-bootstrap.el index f53b9f1..40c333a 100644 --- a/tests/test-bootstrap.el +++ b/tests/test-bootstrap.el @@ -45,5 +45,28 @@ ;; Load chime from parent directory (load (expand-file-name "../chime.el") nil t) +;; Load the near-universal test helpers so individual test files don't each +;; repeat the require. testutil-general carries the base-dir fixture used by +;; `chime-deftest' below; testutil-time carries the dynamic-time helpers. +(require 'testutil-general (expand-file-name "testutil-general.el")) +(require 'testutil-time (expand-file-name "testutil-time.el")) + +(defmacro chime-deftest (name arglist &rest body) + "Define an ERT test NAME with chime's standard base-dir fixture. +ARGLIST is the `ert-deftest' argument list (normally nil). When the +first form in BODY is a string it is kept as the test docstring. The +remaining forms run inside the test base directory, created beforehand +with `chime-create-test-base-dir' and removed afterward with +`chime-delete-test-base-dir' even if a form signals." + (declare (indent 2) (doc-string 3)) + (let* ((doc (and (stringp (car body)) (cdr body) (car body))) + (forms (if doc (cdr body) body))) + `(ert-deftest ,name ,arglist + ,@(and doc (list doc)) + (chime-create-test-base-dir) + (unwind-protect + (progn ,@forms) + (chime-delete-test-base-dir))))) + (provide 'test-bootstrap) ;;; test-bootstrap.el ends here |
