VimからPHPUnitを実行する環境を整える | karakaram-blog
の Emacs版。phpunitのインストールは上記のサイトを参照して
ください。私は PHPを使いませんが、Emacsでも同じことできるん
だよ、ということの紹介です。
quickrun.elのインストール
https://raw.github.com/syohex/emacs-quickrun/master/quickrun.el
からダウンロードし、load-pathの通ったディレクトリに置いて下さい。
auto-installが使える人は以下のようにすればよいでしょう。
(auto-install-from-url "https://raw.github.com/syohex/emacs-quickrun/master/quickrun.el")
Marmaladeにも登録されているので、そちらからインストールして
いただいても構いません。
quickrun.elはデフォルトで非同期に実行するので、非同期に関する
設定は特に不要です。
設定
quickrun.elはデフォルトで ANSI Colorエスケープシーケンスの処理が
行われます。なんで、ANSI Colorエスケープシーケンスだけ利用している
場合はいいのですが、phpunitの --colorsオプションはそうでない
エスケープシーケンスも含んでしまうようなので、独自に色付けして
みようと思います。またキャリッジリターンも出ていたのでその辺も
除去してます。
(defface phpunit-pass '((t (:foreground "white" :background "green" :weight bold))) nil) (defface phpunit-fail '((t (:foreground "white" :background "red" :weight bold))) nil) (defun quickrun/phpunit-outputter () (save-excursion (goto-char (point-min)) (while (replace-regexp "^M" "") nil)) (highlight-phrase "^OK.*$" 'phpunit-pass) (highlight-phrase "^FAILURES.*$" 'phpunit-fail)) (quickrun-add-command "phpunit" '((:command . "phpunit") (:exec . "%c %s") (:outputter . quickrun/phpunit-outputter))) (add-to-list 'quickrun-file-alist '("Test\\.php$" . "phpunit"))
"^M"となっている部分は不可視な文字です, C-q C-mで入力してください。
quickrun.elでは "*.php"ファイルは phpコマンドを使って実行されるので
vim版と同様 "*Test.php"の場合 phpunitが使われるようにします。
outputterパラメータは出力バッファで実行される関数です。elispに
慣れている人なら任意の加工が可能です。ブラウザで開く、変数に代入
する等いくつかのものは定義済みなので、それについては githubの
ページを参照してください。
結果
phpunitの書き方以前に PHPの書き方がわからないので
こんな適当なファイルで試します。
<?php class StackTest extends PHPUnit_Framework_TestCase { public function testPushAndPop() { $this->assertEquals(0, 0); } } ?>