File Coverage

blib/lib/App/Prove/Plugin/CumulativeTimer.pm
Criterion Covered Total %
statement 33 33 100.0
branch n/a
condition 4 6 66.6
subroutine 9 9 100.0
pod 0 1 0.0
total 46 49 93.8


line stmt bran cond sub pod time code
1             package App::Prove::Plugin::CumulativeTimer;
2 2     2   6190 use 5.008001;
  2         10  
3 2     2   17 use strict;
  2         6  
  2         66  
4 2     2   15 use warnings;
  2         6  
  2         128  
5              
6             our $VERSION = "0.01_02";
7              
8 2     2   775 use Class::Method::Modifiers qw( around );
  2         3847  
  2         243  
9 2     2   1070 use TAP::Parser;
  2         88491  
  2         91  
10 2     2   798 use TAP::Formatter::Session;
  2         2273  
  2         180  
11              
12             sub load {
13 1     1 0 37 my ( $class, $p ) = @_;
14              
15 1         6 $p->{app_prove}->timer(1);
16              
17 1         9 my $first_start_time;
18             my $first_start_times;
19             around 'TAP::Formatter::Session::time_report' => sub {
20 2     2   2986929 my $orig = shift;
21 2         8 my ( $self, $formatter, $parser ) = @_;
22 2   66     46 $first_start_time ||= $parser->start_time;
23 2   66     28 $first_start_times ||= $parser->start_times;
24 2     2   18 no warnings 'redefine';
  2         5  
  2         217  
25 2         58 local *TAP::Parser::start_time = sub {$first_start_time};
  2         42  
26 2         17 local *TAP::Parser::start_times = sub {$first_start_times};
  2         95  
27 2         49 return $orig->(@_);
28 1         9 };
29             }
30              
31             1;
32             __END__