proveコマンドの完了をGrowl通知するプラグインを書いてみた

Test::ContinuousでGrowlにtest完了通知させるようにしてみる - すぎゃーんメモで、testが終わるたびにGrowlで結果を教えてくれるのが便利だなーと思って、でもそれを使わない普通のproveコマンドの場合も結果を通知して欲しい!! ということで作ってみた。
GitHub - sugyan/App-Prove-Plugin-Growl: proveのGrowl通知プラグイン
proveコマンドは、"App::Prove::Plugin::ほげほげ"というモジュールがあれば

prove -Pほげほげ

と指定することでプラグインを読み込んで実行できるらしい。ので、こんな名前になります。



こんなカンジで、proveの結果がGrowlで通知されるようになります。
Log::Dispatch::DesktopNotificationを使っているのだけど、Mac以外の環境だと動かないのかな…。

中身

App::Prove::_runtestsメソッドを入れ替えてafter_runtestsで呼ばれるコールバックに通知処理を加えただけのものです。
通知方法はTest::Continuous::Notifierのものをほぼ丸パクリ。

使用方法

local::lib環境なり何なりにインストールして下さい。cpanmだとgithubからもコマンド一発で簡単ですね。

cpanm http://github.com/sugyan/App-Prove-Plugin-Growl/tarball/master      

普通にロードできる状態であれば、

prove -PGrowl

とオプション渡してやるだけでおkです。
プロジェクトディレクトリ直下または$HOME直下の".proverc"に以下を書き加えても良いかもしれません。

-PGrowl

インストールせずに使う

「こんな怪しいモジュールはインストールしたくない!」という場合はコマンドオプションでモジュールへのパスを通してやればいいんですが、どうやら

prove -I $HOME/git/sugyan/App-Prove-Plugin-Growl/lib

というような指定のしかたではイケないらしい。ちょっと面倒だけど

perl -I $HOME/git/sugyan/App-Prove-Plugin-Growl/lib $(which prove)

とやれば大丈夫そうです。

今後

今のところMacGrowl通知しか考えていないので、LinuxとかWinとかの環境でも使えると嬉しい(誰かやってくれないかな)。
すべてのテストが終了したときの"after_runtests"と別に、各テスト終了ごとの"after_test"もフックできるので、ここでも通知をできるようにするオプションでもつけてみようかな。
通知内容についても考えたいところ。