Filter subtests by environment variables
Sometime I skip some subtests for fast testing.
This is just a *hack* to skip only blocks matched the block name by environment variable.
You would add following lines to your t/Util.pm
{
no warnings 'redefine';
my $ORIGIN_subtest = \&Test::More::subtest;
our $SUBTEST_FLAG;
*Test::More::subtest = sub {
if (my $filter = $ENV{SUBTEST_FILTER}) {
if ($_[0] =~ qr{\Q$filter\E} || $SUBTEST_FLAG) {
local $SUBTEST_FLAG = 1;
local $Test::Builder::Level = $Test::Builder::Level + 1;
$ORIGIN_subtest->(@_);
} else {
print {Test::More->builder->failure_output} "# skip $_[0] by SUBTEST_FILTER\n";
}
} else {
goto &$ORIGIN_subtest;
}
};
}
【20111017 20:41 更新】
ネストした場合のことをかんがえていなかったのを修正。
Published: 2011-10-17(Mon) 06:02