Add emacs-ert-mode + ert test defuns

This commit is contained in:
Henrik Lissner 2016-03-03 01:34:41 -05:00
parent 0900c9b7fb
commit 272993c4b3
4 changed files with 56 additions and 1 deletions

View file

@ -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)

View file

@ -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

View file

@ -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"))

View file

@ -0,0 +1,3 @@
;;; `(f-filename buffer-file-name)`
$0