ert.el が素敵 その四
どもです。
食べ蒔きしたミディトマトについて大事件が発生しました。
詳細は明日アップする予定でござんす。
こないだ言っていた ert バッファでのデフォルトディレクトリ問題を
下記の様に解決。無駄が多いですけど。
とりあえず大丈夫っぽい。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; for ert.el (require 'ert) (defun my-run-ert-test-maybe () (interactive) (when (eq major-mode 'emacs-lisp-mode) (save-excursion (beginning-of-defun) (let ((line (buffer-substring-no-properties (point) (save-excursion (end-of-line) (point))))) (when (string-match "^(ert-deftest \\([^ \n]+\\) ()$" line) (let ((w (selected-window)) n (dir (file-name-as-directory (expand-file-name "."))) (b (get-buffer "*ert*"))) ;; Change the current directory to this test directory (when b (save-excursion (set-buffer b) (cd dir))) ;; Run the test. (ert (match-string-no-properties 1 line)) ;; Now, we're in *ert* buffer. (save-excursion (when (re-search-forward "Failed: \\([^ ]+\\)" nil t) (setq n (string-to-number (match-string-no-properties 1))))) (when (zerop n) ;; When passed, move to the original window. (select-window w)))))))) (define-key emacs-lisp-mode-map "\C-c\C-c" 'my-run-ert-test-maybe)
本当は,カーソルがあるS式,つまり,ert-deftest で定義されるテストを
評価してから,実行したいのですが,eval-defun, eval-last-sexp を
呼ぶと,うまくいかん。call-interactively したけど,
なんかしらんが,そのテストの名前が2つ続いたものが定義されてしまう。
わからんので,ギブということで。