Download - 131026 kansai-emacs
Emacsとテスト
shiba_yu36
プログラムを書く時はテストが必須
Emacsでテストを簡単に実行したい
普通にテスト実行する
(defun run-perl-test () "test実行します" (interactive) (compile (format "prove -v %s" (buffer-file-name (current-buffer)))))
デモ
問題• 1ファイルにテスト増えてくると全部実行するの辛い
•なんか絞れるんだったらやりたい
(defun run-perl-method-test () (interactive) (let ( (command compile-command) (test-method nil)) (save-excursion (when (or (re-search-backward "\\bsub\s+\\([_[:alpha:]]+\\)\s*:\s*Test" nil t) (re-search-forward "\\bsub\s+\\([_[:alpha:]]+\\)\s*:\s*Test" nil t)) (setq test-method (match-string 1)))) (if test-method (compile (format "cd %s; TEST_METHOD=%s perl -M'Project::Libs lib_dirs => [qw(modules/*/lib local/lib/perl5)]' %s" (replace-regexp-in-string "\n+$" "" (shell-command-to-string "git rev-parse --show-cdup")) test-method (buffer-file-name (current-buffer))))
(compile (format "cd %s; perl -M'Project::Libs lib_dirs => [qw(modules/*/lib local/lib/perl5)]' %s" (replace-regexp-in-string "\n+$" "" (shell-command-to-string "git rev-parse --show-cdup")) (buffer-file-name (current-buffer)))))))
PerlでTest::Classのメソッド単位で実行する
デモ
やっていること• emacsで現在ファイル名、Test::Classのメソッド名を取得
• proveのTEST_METHODを指定してcompileで実行
やっていること• (buffer-file-name (current-buffer))•現在ファイルの絶対パス取る
やっていること• save-excursion + re-search-backword + match-string
•現在状態をセーブした状態で正規表現検索
• Test::Classのメソッド名とっている
やっていること• (compile “”)• compileでコマンド実行• quick-runとか使っても良い
その他の言語??•たぶんrubyとか他でも正規表現でテストの範囲を見つけられれば出来ます
•頑張ろう
終わりです