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 更新】
ネストした場合のことをかんがえていなかったのを修正。