Catalyst::Testを使ってみたらtestを1回走らせるのも時間がかかって、いちいち結果出るまで眺めていたくないし、Growlで通知してもらうのがいいよなーと思って、例によってTwitterで聞いてみた。
sugyan | prove終了したら結果をGrowl通知してくれる仕組みって無いのかしら? ググってもそれらしいものが見当たらない。。 | 2010/03/04(木) 13:25:20 | |
lopnor | @sugyan Test::Continuous では? | 2010/03/04(木) 13:26:29 |
http://search.cpan.org/~gugod/Test-Continuous-0.67/lib/Test/Continuous.pm
これのことらしい。全然知らなかった。
早速いれてみようとすると、色々こけた。
何だかよく分からない、B::OPCheck。
YellowStore: [Perl:テスト]B-OPCheck-0.29
どうも0.28以降が失敗するようで、とりあえず0.27を入れてお茶を濁した。
$ cpanm http://search.cpan.org/CPAN/authors/id/N/NU/NUFFIN/B-OPCheck-0.27.tar.gz
あとMac::Growl。
なんだかpermissionまわりで怒られたので、sudo cpanでシステムにインストールしてしまった。
$ sudo cpan -i Mac::Growl
とりあえずこれでTest::Continuousが使えるようになった。"autoprove"というコマンドが付属してきてるので、それを使えば良いだけっぽい。ためしにモジュール作成するようにやってみる
$ module-starter --module=Hoge Created starter directories and files $ cd Hoge $ ls t 00.load.t perlcritic.t pod-coverage.t pod.t $ autoprove [MSG] Will run continuously test /Users/sugyan/temp/Hoge/t/00.load.t [MSG] Will run continuously test /Users/sugyan/temp/Hoge/t/perlcritic.t [MSG] Will run continuously test /Users/sugyan/temp/Hoge/t/pod-coverage.t [MSG] Will run continuously test /Users/sugyan/temp/Hoge/t/pod.t
と、testファイルを見てautoなtestの準備が始まる。この時点で読み込んだtファイルしか監視しないのかな?
例えば01.hoge.tを一度作って、そのままの状態にしておき、別のところで書き換える。
$ touch t/01.hoge.t $ autoprove
use Test::More tests => 1; ok 1;
勝手にテストが走り、結果がGrowlで通知される。
01.hoge.tを書き換えて失敗させてみる。
use Test::More tests => 1; use Hoge; can_ok( 'Hoge', qw/new/ );
lib/Hoge.pmを書き換えて、テストが通るようにする。
... # Module implementation here sub new { my $class = shift; return bless {}, $class; } ...
あら、今度はpod-coverage.tが失敗してる! PODを書き足す。
... =head1 INTERFACE =over =item new =back ...
とりあえず結構よさげなので使ってみようと思います。