proveコマンドの結果をTwitterにPOSTするプラグインの書き方

まったくそんな需要は無いと思うけど。

package Hoge;
use strict;
use warnings;
use base 'TAP::Harness';
use Config::Pit;
use Net::Twitter;

sub load {
    my ($class, $p) = @_;

    my $prove = $p->{app_prove};
    $prove->{harness_class} = $class;
}

sub new {
    my $class = shift;
    my $self = $class->SUPER::new(@_);

    $self->callback(
        after_runtests => sub {
            my $aggregate = shift;
            my $result = $aggregate->all_passed ? 'PASS' : 'FAIL';
            my $config = pit_get('twitter.com', require => {
                'username' => 'your username on Twitter',
                'password' => 'your password on Twitter',
            });
            Net::Twitter->new(%$config)->update($result);
        }
    );

    return $self;
}

1;

こんな.pmを書いて、

perl -I<Hoge.pmへのパス> $(which prove) -l -PHoge

もしくは

PERL5LIB=$PERL5LIB:<Hoge.pmへのパス> prove -l -PHoge

とやる


proveのプラグインはApp::Prove::Pluginという名前空間じゃなくてもよかった
TAP::Harnessのサブクラスとして定義している場合は"prove --harness=Hoge"と指定してやることもできる