Add emacs-ert-mode + ert test defuns
This commit is contained in:
parent
0900c9b7fb
commit
272993c4b3
4 changed files with 56 additions and 1 deletions
|
@ -34,6 +34,7 @@
|
|||
("\\.c$" "__.c" c-mode)
|
||||
|
||||
;; Elisp
|
||||
("-test\\.el$" "__" emacs-ert-mode)
|
||||
("\\.emacs\\.d/.+\\.el$" "__initfile" emacs-lisp-mode)
|
||||
("\\.emacs\\.d/private/\\(snippets\\|templates\\)/.+$" "__" snippet-mode)
|
||||
|
||||
|
|
|
@ -12,5 +12,37 @@
|
|||
(let ((func (function-called-at-point)))
|
||||
(if func (find-function-other-window func))))
|
||||
|
||||
(defun narf--ert-pre ()
|
||||
(save-buffer)
|
||||
(eval-buffer))
|
||||
|
||||
;;;###autoload
|
||||
(defun narf/ert-run-test ()
|
||||
(interactive)
|
||||
(let (case-fold-search)
|
||||
(narf--ert-pre)
|
||||
(aif (thing-at-point 'defun t)
|
||||
(if (string-match "(ert-deftest \\([^ ]+\\)" it)
|
||||
(ert-run-tests-interactively (substring it (match-beginning 1) (match-end 1)))
|
||||
(user-error "Invalid test at point"))
|
||||
(user-error "No test found at point"))))
|
||||
|
||||
;;;###autoload
|
||||
(defun narf/ert-rerun-test ()
|
||||
(interactive)
|
||||
(let (case-fold-search)
|
||||
(narf--ert-pre)
|
||||
(aif (car-safe ert--selector-history)
|
||||
(ert-run-tests-interactively it)
|
||||
(message "No test found in history, looking for test at point")
|
||||
(narf/ert-run-test))))
|
||||
|
||||
;;;###autoload
|
||||
(defun narf/ert-run-all-tests ()
|
||||
(interactive)
|
||||
(ert-delete-all-tests)
|
||||
(narf--ert-pre)
|
||||
(ert-run-tests-interactively t))
|
||||
|
||||
(provide 'defuns-lisp)
|
||||
;;; defuns-lisp.el ends here
|
||||
|
|
|
@ -72,13 +72,32 @@
|
|||
"define-text-object" "add-yas-minor-mode" "define-docset"
|
||||
"define-org-link!" "define-company-backend" "define-org-section"))
|
||||
"!\\)")
|
||||
(1 font-lock-keyword-face append))))
|
||||
(1 font-lock-keyword-face append))
|
||||
;; Ert
|
||||
(,(concat
|
||||
"("
|
||||
(regexp-opt '("ert-deftest") t)
|
||||
" \\([^ ]+\\)")
|
||||
(1 font-lock-keyword-face)
|
||||
(2 font-lock-function-name-face))))
|
||||
|
||||
;; Real go-to-definition for elisp
|
||||
(map! :map emacs-lisp-mode-map
|
||||
:m "gd" 'narf/elisp-find-function-at-pt
|
||||
:m "gD" 'narf/elisp-find-function-at-pt-other-window)
|
||||
|
||||
(define-minor-mode emacs-ert-mode
|
||||
"Ert test file minor mode"
|
||||
:lighter " Ert" :keymap (make-sparse-keymap)
|
||||
(add-yas-minor-mode! 'emacs-ert-mode))
|
||||
(associate! emacs-ert-mode :match "/test/.+-test\\.el$")
|
||||
|
||||
(map! :map emacs-lisp-mode-map
|
||||
(:localleader
|
||||
:n "tr" 'narf/ert-rerun-test
|
||||
:n "ta" 'narf/ert-run-all-tests
|
||||
:n "ts" 'narf/ert-run-test))
|
||||
|
||||
(use-package slime :defer t
|
||||
:config
|
||||
(setq inferior-lisp-program "clisp"))
|
||||
|
|
3
private/templates/emacs-ert-mode/__
Normal file
3
private/templates/emacs-ert-mode/__
Normal file
|
@ -0,0 +1,3 @@
|
|||
;;; `(f-filename buffer-file-name)`
|
||||
|
||||
$0
|
Loading…
Add table
Add a link
Reference in a new issue