package Test::Run::Plugin::CollectStats; use warnings; use strict; use Moose; use MRO::Compat; use Storable (); extends('Test::Run::Base'); use Test::Run::Plugin::CollectStats::TestFileData; =head1 NAME Test::Run::Plugin::CollectStats - Test::Run plugin to collect statistics and data. =head1 VERSION Version 0.0103 =cut has '_recorded_test_files_data' => (is => "rw", isa => "ArrayRef", default => sub { [] }, ); has '_test_files_names_map' => (is => "rw", isa => "HashRef", default => sub { +{} }, ); our $VERSION = '0.0103'; =head1 SYNOPSIS package MyTestRun; use base 'Test::Run::Plugin::AlternateInterpreters'; use base 'Test::Run::Obj'; =head1 METHODS =cut sub _run_single_test { my ($self, $args) = @_; my $filename = $args->{test_file}; $self->next::method($args); $self->_test_files_names_map->{$filename} = scalar(@{$self->_recorded_test_files_data()}); push @{$self->_recorded_test_files_data}, Test::Run::Plugin::CollectStats::TestFileData->new( { elapsed_time => $self->last_test_elapsed(), results => Storable::dclone($self->last_test_results()), summary_object => Storable::dclone($self->last_test_obj()), } ); return; } =head2 $tester->get_recorded_test_file_data($index) Returns the L instance representing the results of test number $index. =cut sub get_recorded_test_file_data { my $self = shift; my $idx = shift; return $self->_recorded_test_files_data->[$idx]; } =head2 $tester->find_test_file_idx_by_filename($filename) Retrieves the (last) index of the test file $filename. =cut sub find_test_file_idx_by_filename { my $self = shift; my $filename = shift; return $self->_test_files_names_map->{$filename}; } =head2 $tester->get_num_collected_tests() Retrieves the number of collected tests. =cut sub get_num_collected_tests { my $self = shift; return scalar(@{$self->_recorded_test_files_data}); } =head2 $tester->get_filename_test_data($filename) Returns theL instance representing the results of the (last) test with the filename $filename. =cut sub get_filename_test_data { my $self = shift; my $filename = shift; return $self->get_recorded_test_file_data( $self->find_test_file_idx_by_filename($filename) ); } =head1 SEE ALSO L, L, L. =head1 AUTHOR Shlomi Fish, C<< >> =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc Test::Run::Plugin::CollectStats You can also look for information at: =over 4 =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * RT: CPAN's request tracker L =item * Search CPAN L =back =head1 ACKNOWLEDGEMENTS =head1 COPYRIGHT & LICENSE Copyright 2007 Shlomi Fish, all rights reserved. This program is released under the following license: MIT/X11. =cut 1; # End of Test::Run::Plugin::CollectStats