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); } } ?>

