forked from ecukes/ecukes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ecukes-hooks.el
71 lines (49 loc) · 1.61 KB
/
ecukes-hooks.el
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
;;; ecukes-hooks.el --- A number of hooks that allow us to run code at various points in the test cycle
(require 'dash)
(defvar ecukes-hooks-before ()
"List of before hooks.")
(defvar ecukes-hooks-after ()
"List of after hooks.")
(defvar ecukes-hooks-setup ()
"List of setup hooks.")
(defvar ecukes-hooks-teardown ()
"List of teardown hooks.")
(defvar ecukes-hooks-fail ()
"List of fail hooks.")
(defmacro define-hook (list body)
`(add-to-list ,list (lambda () ,@body) t))
(defmacro Before (&rest body)
"Run BODY in before hook."
`(define-hook 'ecukes-hooks-before ,body))
(defmacro After (&rest body)
"Run BODY in after hook."
`(define-hook 'ecukes-hooks-after ,body))
(defmacro Setup (&rest body)
"Run BODY in setup hook."
`(define-hook 'ecukes-hooks-setup ,body))
(defmacro Teardown (&rest body)
"Run BODY in teardown hook."
`(define-hook 'ecukes-hooks-teardown ,body))
(defmacro Fail (&rest body)
"Run BODY in fail hook."
`(define-hook 'ecukes-hooks-fail ,body))
(defun ecukes-hooks-run-before ()
"Run all before hooks."
(ecukes-hooks-run ecukes-hooks-before))
(defun ecukes-hooks-run-after ()
"Run all after hooks."
(ecukes-hooks-run ecukes-hooks-after))
(defun ecukes-hooks-run-setup ()
"Run all setup hooks."
(ecukes-hooks-run ecukes-hooks-setup))
(defun ecukes-hooks-run-teardown ()
"Run all teardown hooks."
(ecukes-hooks-run ecukes-hooks-teardown))
(defun ecukes-hooks-run-fail ()
"Run all fail hooks."
(ecukes-hooks-run ecukes-hooks-fail))
(defun ecukes-hooks-run (hooks)
"Run HOOKS."
(-each hooks 'funcall))
(provide 'ecukes-hooks)
;;; ecukes-hooks.el ends here