131026 kansai-emacs

15
Emacsとテスト

Upload: yuki-shibazaki

Post on 17-Dec-2014

675 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 131026 kansai-emacs

Emacsとテスト

Page 2: 131026 kansai-emacs

shiba_yu36

Page 3: 131026 kansai-emacs

プログラムを書く時はテストが必須

Page 4: 131026 kansai-emacs

Emacsでテストを簡単に実行したい

Page 5: 131026 kansai-emacs

普通にテスト実行する

(defun run-perl-test () "test実行します" (interactive) (compile (format "prove -v %s" (buffer-file-name (current-buffer)))))

Page 6: 131026 kansai-emacs

デモ

Page 7: 131026 kansai-emacs

問題• 1ファイルにテスト増えてくると全部実行するの辛い

•なんか絞れるんだったらやりたい

Page 8: 131026 kansai-emacs

(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のメソッド単位で実行する

Page 9: 131026 kansai-emacs

デモ

Page 10: 131026 kansai-emacs

やっていること• emacsで現在ファイル名、Test::Classのメソッド名を取得

• proveのTEST_METHODを指定してcompileで実行

Page 11: 131026 kansai-emacs

やっていること• (buffer-file-name (current-buffer))•現在ファイルの絶対パス取る

Page 12: 131026 kansai-emacs

やっていること• save-excursion + re-search-backword + match-string

•現在状態をセーブした状態で正規表現検索

• Test::Classのメソッド名とっている

Page 13: 131026 kansai-emacs

やっていること• (compile “”)• compileでコマンド実行• quick-runとか使っても良い

Page 14: 131026 kansai-emacs

その他の言語??•たぶんrubyとか他でも正規表現でテストの範囲を見つけられれば出来ます

•頑張ろう

Page 15: 131026 kansai-emacs

終わりです