kiyokaのブログアーカイブ

Archive of old blog posts

RSpecのformatterのカスタマイズ

最近RSpecによるテストを Emacs の M-x compile で実行するようにした。 何がいいかというと、エラー行に飛べるようになる。 TDDによる開発を行う時は、先にテストケースを書いて、まだ製品コードが未実装の状態でテストがFailすることを確認してから製品コードを書き始める。 そんな中、あまりにもFailした行に飛ぶのが面倒臭くなったのでEmacsが使えないか模索してみた。

M-x compileを実行する

RSpecの標準フォーマッタでは、RSpecが出力する飾りの # 記号が邪魔をしてEmacsが正しいファイル名を取得できない。 また、#を取るだけでは、RSpecツール本体の内部関数まで出てしまってじゃまだった。 それら直した結果、以下のように該当する行だけをエラー行と認識し、タグジャンプできるようになった。 img

次のエラーメッセージにTabキーで移動、Returnキーでエラーソース行に移動する

img ここまで作ってみたけど、EmacsにはRSpec実行するモードがあるんだろうな。ちょっと調べた限りでは見つかならなかったけど。 せっかく作ったのでカスタマイズしたフォーマッタをRSpecの本家にpull requestしてみるかな。 しかし、ちょっとしたローカルの変更とpull requsestダブリューするまでの敷居が以外と高いのでどうするか迷い中。

今回書いたフォーマッタはこのソース。 RSpec formatter for Emacs E-x compile feature — Gist

次のように特別なオプションを指定してRSpecを実行する。

time rspec -I ./lib -b ./test/nendo_spec.rb  -r ./test/rspec_formatter_for_emacs.rb -f CustomFormatter