そらはーです!
RSpec で pending
使ってテストを一時的に無効化した事ある方は大勢いらっしゃるんじゃないでしょうか!
なんらかの事情で一時的に pending せざるを得ない状況ならともかく、pending したなら責任をもって該当のテストを治すか、そもそも不要なら消すなどといった対処をしてもらいたいものですね!
でも、実際来週までには!とか言っても放置する人間や、そもそも直さず1年,2年以上放置される事もしばしばあるのが現実です………
pending を放置する事によって、実はそれは(他の人にとって)かなり重要なテストで、そんなテストがpendingされてる訳ないと思った、他のメンバーによる変更で実はそのテストがコケて事故っていたという可能性も存在するわけです。
- 重要なテストをAさんが pending する (「テストは追って修正する」みたいな感じで)
- 比較的大きめの変更を B さんが加える。一応全部テストを回してグリーンな事を確認
- (実は重要なテストがAさんによって pending されている事に気づいていない)
- 事故っている
本当は pending を使わないのが一番なんですが、やむなく使った場合はちゃんと責任を持って直しましょ… 直せ!!! というわけで、催促するツールを作りました!
Pendaxes
pend(ing) axes です! 今のところ rspec をサポートしてます!
メール等でコミットした人に個別で催促メールを送ったりできます!!!!
$ gem install pendaxes
$ cd /path/to/your/git/working/copy
$ pendaxes --init
$ pendaxes
$ open report.html
とりあえず試すには、working copy の中で pendaxes --init
を叩くとそのディレクトリで .pendaxes.yml
を吐き出すので、そこで pendaxes
を実行すると report.html
を吐き出します。
後述するメール設定をすると、この report.html のようなメールがコミッター毎にその人のコミットしたpendingがメールで送られると思えば良いです。
(git grep とかを使ってるので git リポジトリと git が必要です)
(Ruby 1.9.2 以降で動きます。それ以前は保証しません)
設定ファイル
https://github.com/cookpad/pendaxes/wiki/Configuration
を参照してください… ちょっと複雑です。以下に一例を載せるので参考にしてください><
メールを送る
notifications
に以下のような行を足せば動きます。mail.gem
の sendmail
delivery_method を使って、各コミッターにメールを送信します。
- use: mail
reporter:
use: haml
from: no-reply@example.com
delivery_method: sendmail
こんなメールが飛びます:
cron で回してみる
cron で回す際は、config.yml
に git clone 先と clone 元を指定してあげると pendaxes が pull まで面倒を見てくれて便利です。pendaxes --init
で指定付きで生成できます。
$ pendaxes --init config.yml https://github.com/cookpad/pendaxes.git /tmp/pendaxes
で、/tmp/pendaxes
に https://github.com/cookpad/pendaxes.git
を clone して自動で git fetch
と git reset --hard
で最新のコードに更新してくれる config.yml を生成してくれます
$ pendaxes config.yml
で生成した config.yml を実行してくれます。後は同じように config.yml を編集してメール等を送る設定を追加した上で cron で回せばいいと思います。
効果
毎朝6時に cron で回して送るようにしたところ、だいたい放置されていた大量の pending がどんどん数日で消えて行きました! わーい!
pendaxeのおかげで安心してpendできる
— [43m[31m[5mねぎっぽ (@negipo) October 8, 2012
…あれ?