元記事はこちら: http://jeffkreeftmeijer.com/2010/fuubar-the-instafailing-rspec-progress-bar-formatter/
(翻訳の公開と画像の利用は本人より許諾済みです)
Jeffさんのひとつ前のRSpecの記事もよろしければどうぞ。
【翻訳】RSpecでテストが失敗したら即停止して結果を出力
翻訳の間違い等があればブログコメントやTwitterなどで遠慮無くご指摘ください。
Fuubar: instafailing な RSpec
プログレスバーフォーマッタ
気づいたかもしれないけど、私はここ一週間ほど RSpec でテストスイートをより良く・より速く走らせることに時間を費やしていた。そして今週は、RSpec のフォーマッタを調べた。
spec が失敗した時、RSpec が出力する赤い "F" 以外に、あなたがすぐにバグを修正しにいくためのダイレクトなフィードバックがない。あなたは単に全てのテストスイートが走り切るのを待つか、あるいは ^Cを使って割込みをかけるしかない。あなたに出来る他の事は、先週私が書いた --fail-fast オプションを使うか、あるいは残りの spec を走らせ続けている間にも failure の詳細を出力する rspec-instafail を見てみることだ。こりゃあいいや。
それ以外にも、spec の総数を知ったり、既に実行された spec の数を知ったり、例えば 終了予定時刻(ETA)か何かのようなもの知ったり、より良くできるものがあったと気づいた。また、ドットと "F" による大きな文字列は不要であり、この情報を表示するもっと良い方法があるはずだと感じ始めた。
私は RSpec のフォーマッタを調べて、それを書くのがとても簡単だと気づいたので、気紛れに FffuuuFormatter という、RSpec が FFFFF の代わりに FFFUUU を出力するフォーマッタを書いてみたりした。えっ。
Fuubar
少し見て回ったあと、2008年に @nick_evans によって書かれた、私がプログレスバーフォーマッタで抱えているようないくつかの問題を修正しようとした記事を見つけた。Nick は @peleteiro の progressbar gem を使った本当に良い解決法を書いていた。
私は Nick の仕事をさらに先に進めようと決め、rspec-instafail を使って全ての failure 毎にダイレクトフィードバックを行う、RSpec 2.0 にもちゃんと対応したフォーマッタを作り上げた。全てを gem に入れたところで、@josevalim が名前を考えてくれた: Fuubar。
ここに、動作中の Fuubar の短いビデオがある:
Fuubar のインストール法は簡単だ。ただ Gemfile にそれを入れて、これからはあなたの spec をこうやって走らせるだけだ。
(訳注:Bundler 前提みたいに書いてありますが、もちろん gem install fuubar でも大丈夫です)
$ rspec --format Fuubar --color spec
デフォルトのフォーマッタとして Fuubar を使いたいなら、.rspec ファイルにオプションを書けばよい。
--format Fuubar --color
そのあとは、あなたがいつも慣れているように spec を走らせることができる。
$ rspec spec
Fuuture
いつもの: どんな感じか教えて欲しい、そして Github 上で issue を作成し、いいアイデアがあったり、何か問題があったら、Github メッセージを送るか email で連絡して欲しい。もちろん、いつでもプロジェクトを fork して、プルリクエストを送ったり email でパッチを送ることもできる。
Fuubar は今のところ RSpec 2 上でのみ動作するが、旧バージョンと互換性を持たせられない理由はない。また、Nick の元のコードには遅い spec を見つける機能があったが、いい実装が見つからなかったので私はそれを省略した。
それで、しなければならないことはまだたくさんあるが、これは現在のフォーマッタからの確かな進歩だと私は思う。多分、Fuubar を RSpec のデフォルトのフォーマッタの一つにするパッチに変えることもできるだろう。あなたはどう思う?
あなたに神を愛しています。聖書を読んでください。
返信削除