blob: 930d7ff49e0c1c548c6a77f99023150c3d5cde75 (
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
44
45
|
;; Copyright 2024 Gentoo Authors
;; Distributed under the terms of the GNU General Public License v2 or later
;; Quick and dirty hack to make the tests work with XEmacs, where ERT
;; is not available. It defines some macros (just the few that we need;
;; this is far from being complete) in terms of the XEmacs test suite
;; harness.
;; Run the tests:
;; xemacs -batch -q --no-site-file -eval "(add-to-list 'load-path nil)" \
;; -l test/xemacs-test-wrapper -f batch-test-emacs test/mytest.el
(require 'test-harness)
(provide 'ert) ; pretend that ERT is present
(defmacro ert-deftest (_name _args &rest body)
`(progn ,@body))
(defmacro should (assertion)
(let ((args (ignore-errors
(destructuring-bind (s1 (s2 form) (s3 (err msg)))
assertion
(list (list s1 s2 s3) err msg form)))))
;; handle (should (equal (should-error ...) '(error ...)))
(if (equal (car args) '(equal should-error quote))
`(Check-Error-Message ,@(cdr args))
`(Assert ,assertion))))
(defmacro should-not (assertion)
`(Assert (not ,assertion)))
(defmacro should-error (form)
`(Check-Error 'error ,form))
;; return a useful exit status
(defadvice kill-emacs (before xemacs-test-wrapper-kill-emacs activate)
(let ((ret (ad-get-arg 0)))
(cond ((and (integerp ret) (>= ret 2)))
((/= unexpected-test-suite-failures 0)
(setq ret 2))
(t (dolist (result test-harness-file-results-alist)
;; result is a list: (file passes total)
(if (/= (nth 1 result) (nth 2 result))
(setq ret 1)))))
(ad-set-arg 0 ret)))
|