Reorganize unit-tests and test workflow
+ Moved unit tests out of tests/ and into their respective modules. + Rewrite makefile and added these tasks: + <MODULE>/<SUBMODULE> -- byte-compile a specific module + test:<MODULE>/<SUBMODULE> -- runs tests for a specific module + testi -- run tests in an interactive session of Emacs (WIP) + run -- opens an Emacs session with this config; useful when it is in a non-standard location.
This commit is contained in:
parent
cacd188286
commit
9c93c453e8
22 changed files with 511 additions and 423 deletions
81
core/test/core-lib.el
Normal file
81
core/test/core-lib.el
Normal file
|
@ -0,0 +1,81 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; core/test/core-lib.el
|
||||
|
||||
;; `add-hook!'
|
||||
(def-test! add-one-to-one-hook
|
||||
(let (hooks)
|
||||
(add-hook! 'hooks 'a-hook)
|
||||
(should (equal hooks '(a-hook)))))
|
||||
|
||||
(def-test! add-many-to-one-hook
|
||||
(let (hooks)
|
||||
(add-hook! 'hooks '(hook-a hook-b hook-c))
|
||||
(should (equal hooks '(hook-c hook-b hook-a)))))
|
||||
|
||||
(def-test! add-one-to-many-hooks
|
||||
(let (hooks-a hooks-b hooks-c)
|
||||
(add-hook! '(hooks-a hooks-b hooks-c) 'a-hook)
|
||||
(should (equal hooks-a '(a-hook)))
|
||||
(should (equal hooks-b '(a-hook)))
|
||||
(should (equal hooks-c '(a-hook)))))
|
||||
|
||||
(def-test! add-many-to-many-hooks
|
||||
(let (hooks-a hooks-b hooks-c)
|
||||
(add-hook! '(hooks-a hooks-b hooks-c) '(hook-a hook-b hook-c))
|
||||
(should (equal hooks-a '(hook-c hook-b hook-a)))
|
||||
(should (equal hooks-b '(hook-c hook-b hook-a)))
|
||||
(should (equal hooks-c '(hook-c hook-b hook-a)))))
|
||||
|
||||
(def-test! add-non-literal-hooks
|
||||
(let (some-mode-hook)
|
||||
(add-hook! some-mode 'a-hook)
|
||||
(should (equal some-mode-hook '(a-hook)))))
|
||||
|
||||
;; `remove-hook!'
|
||||
(def-test! remove-hooks
|
||||
(let ((hooks-a '(hook-c hook-b hook-a))
|
||||
(hooks-b '(hook-c hook-b hook-a))
|
||||
(hooks-c '(hook-c hook-b hook-a)))
|
||||
(remove-hook! '(hooks-a hooks-b hooks-c) '(hook-a hook-b hook-c))
|
||||
(should (null hooks-a))
|
||||
(should (null hooks-b))
|
||||
(should (null hooks-c))))
|
||||
|
||||
(def-test! remove-hook-forms
|
||||
(let (hooks)
|
||||
(add-hook! 'hooks (message "Hello world"))
|
||||
(should hooks)
|
||||
(remove-hook! 'hooks (message "Hello world"))
|
||||
(should (null hooks))))
|
||||
|
||||
;; `add-transient-hook!'
|
||||
(def-test! transient-hooks
|
||||
(let (hooks value)
|
||||
(add-transient-hook! 'hooks (setq value t))
|
||||
(run-hooks 'hooks)
|
||||
(should (eq value t))
|
||||
(should (null hooks))))
|
||||
|
||||
(def-test! transient-function
|
||||
(let (value)
|
||||
(add-transient-hook! #'ignore (setq value (not value)))
|
||||
(ignore t)
|
||||
(should (eq value t))
|
||||
;; repeat to ensure it was only run once
|
||||
(ignore t)
|
||||
(should (eq value t))))
|
||||
|
||||
(def-test! unquote
|
||||
(should (equal (doom-unquote '(quote (a b c))) '(a b c)))
|
||||
;; nested
|
||||
(should (equal (doom-unquote '(quote (quote (a b c)))) '(a b c)))
|
||||
;; sub-quote
|
||||
(should (equal (doom-unquote '(quote (a (quote b) c))) '(a (quote b) c))))
|
||||
|
||||
(def-test! enlist
|
||||
(should (equal (doom-enlist 'a) '(a)))
|
||||
(should (equal (doom-enlist '(a)) '(a))))
|
||||
|
||||
|
||||
;; TODO `associate!'
|
||||
;; TODO `def-setting!' & `set!'
|
Loading…
Add table
Add a link
Reference in a new issue