パルカワ2

最近はFlutterをやっています

テスト毎にcallback呼びたい。

追記:僕なりの結論です → http://hisaichi5518.hatenablog.jp/entry/2013/05/25/183128


各テストが実行される前になんかやりたいとか、各テストが実行された後になんか表示させたいとか、そういうことはよくある。
TAP::Harnessを継承してアレコレして、prove --harness=... とすると出来た。
でも、harness変えるのやだなと思ったので、別の方法を探してみた。

package App::Prove::Plugin::EatUnko;
use strict;
use warnings;
use Class::Method::Modifiers qw(install_modifier);

install_modifier("TAP::Base", "around", "_initialize", sub {
    my $orig = shift;
    my ( $self, $arg_for, $ok_callback ) = @_;

    if (grep { $_ eq "made_parser" } @{$ok_callback || []}) {
        $arg_for = {
            callbacks => {
                made_parser => sub {
                    warn "unko mgmg";
                },
            },
            %{$arg_for||{}},
        };
    }

    $orig->($self, $arg_for, $ok_callback);
});

1;

完全に時間の無駄っぽかった。
追記:loadで囲む必要なかった。