EmacsからPHPUnitを実行する環境を整える

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


失敗時

おわりに

quickrun.elってコードを書いたのはいいけど、使い方について
あまり説明できていなかったと思うので、Vim quickrunの記事を
見かけたらそれに対抗する Emacs版の記事を書こうと思います。
まだまだユーザ数も少ないと思いますのでね。