#!perl -T
# -*-mode:cperl-*-
use Test::More;
eval "use Test::Pod::Coverage 1.04";
plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;
{
package MyPodCoverage;
our @ISA = 'Pod::Coverage';
my $package;
sub _CvGV {
my $self = shift;
my $owner = $self->SUPER::_CvGV(@_);
return $owner unless my $p = $self->{package}; # guard ...
$owner =~ s/^\*Test::Trap::Builder/*$p/; # evil!
return $owner;
}
$INC{'MyPodCoverage.pm'} = 1; # pretend we're loaded :)
# In newer Pod::Coverage, _CvGV above is not used, and no interface
# is exposed to deal with this! Bad Pod::Coverage!
# All I can think of doing, is mess with B::GV::GvFLAGS instead:
my $old = \&B::GV::GvFLAGS;
my $imported_cv = eval { B::GVf_IMPORTED_CV() } || 0x80;
no warnings 'redefine';
*B::GV::GvFLAGS = sub { # truly evil!
my $r = $old->(@_);
$r &= ~$imported_cv if $_[0]->FILE =~ m,/blib/lib/Test/Trap/Builder,;
return $r;
};
}
my $layer =
qr/ ^ layer:
(?: raw
| die
| exit
| flow
| stdout
| stderr
| warn
| default
| list
| scalar
| void
| output
| on_fail
) $
/x;
my $accessor =
qr/ (?: leaveby
| exit
| die
| stdout
| stderr
| wantarray
| return
| warn
| list
| scalar
| void
)
/x;
my $did = qr/ ^ did _ $accessor $ /x;
my $test =
qr/ ^ $accessor _
(?: ok
| nok
| is
| isnt
| isa_ok
| like
| unlike
| cmp_ok
| is_deeply
) $
/x;
my $more =
qr/ ^
(?: Exception
| Next
| Prop
| Run
| Teardown
| TestAccessor
| TestFailure
) $
/x;
all_pod_coverage_ok({ trustme => [$layer, $did, $test, $more],
coverage_class => 'MyPodCoverage',
});