RSpecのformatterのカスタマイズ
最近RSpecによるテストを Emacs の M-x compile で実行するようにした。 何がいいかというと、エラー行に飛べるようになる。 TDDによる開発を行う時は、先にテストケースを書いて、まだ製品コードが未実装の状態でテストがFailすることを確認してから製品コードを書き始める。 そんな中、あまりにもFailした行に飛ぶのが面倒臭くなったのでEmacsが使えないか模索してみた。
M-x compileを実行する
RSpecの標準フォーマッタでは、RSpecが出力する飾りの # 記号が邪魔をしてEmacsが正しいファイル名を取得できない。
また、#を取るだけでは、RSpecツール本体の内部関数まで出てしまってじゃまだった。
それら直した結果、以下のように該当する行だけをエラー行と認識し、タグジャンプできるようになった。
次のエラーメッセージにTabキーで移動、Returnキーでエラーソース行に移動する
ここまで作ってみたけど、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