X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FTool%2Fmemcheck.pm;h=0857a3de680b4f131e19af72fb280c68c6335937;hb=5dd4ffc1370138eb1e9501f82a69f98208e4c0ff;hp=8e8371c460ea6924c76ec100c6067df0aa22cfcd;hpb=44f0639e6ac34bdc0be52d47fe2c2df43ab1ca94;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/lib/Test/Valgrind/Tool/memcheck.pm b/lib/Test/Valgrind/Tool/memcheck.pm index 8e8371c..0857a3d 100644 --- a/lib/Test/Valgrind/Tool/memcheck.pm +++ b/lib/Test/Valgrind/Tool/memcheck.pm @@ -9,11 +9,11 @@ Test::Valgrind::Tool::memcheck - Run an analysis through the memcheck tool. =head1 VERSION -Version 1.12 +Version 1.17 =cut -our $VERSION = '1.12'; +our $VERSION = '1.17'; =head1 DESCRIPTION @@ -29,13 +29,20 @@ This class inherits L. =head2 C + my $required_version = $tvt->requires_version; + This tool requires C C<3.1.0>. =cut sub requires_version { '3.1.0' } -=head2 C<< new callers => $callers, ... >> +=head2 C + + my $tvtm = Test::Valgrind::Tool::memcheck->new( + callers => $callers, + %extra_args, + ); Your usual constructor. @@ -51,7 +58,7 @@ sub new { my %args = @_; - my $callers = delete $args{callers} || 12; + my $callers = delete $args{callers} || 50; $callers =~ s/\D//g; my $self = bless $class->Test::Valgrind::Tool::new(%args), $class; @@ -65,6 +72,8 @@ sub new_trainer { shift->new(callers => 50) } =head2 C + my $callers = $tvtm->callers; + Read-only accessor for the C option. =cut @@ -73,7 +82,9 @@ sub callers { $_[0]->{callers} } sub suppressions_tag { 'memcheck-' . $_[1]->version } -=head2 C +=head2 C + + my $parser_class = $tvtm->parser_class($session); This tool uses a L parser in analysis mode, and a L parser in suppressions mode. @@ -86,13 +97,17 @@ sub parser_class { ? 'Test::Valgrind::Parser::Suppressions::Text' : 'Test::Valgrind::Parser::XML::Twig'; - local $@; - eval "require $class"; + { + local $@; + eval "require $class; 1" or die $@; + } return $class; } -=head2 C +=head2 C + + my $report_class = $tvtm->report_class($session); This tool emits C object reports in analysis mode, and C object reports in suppressions mode. @@ -101,8 +116,12 @@ This tool emits C object reports in anal sub report_class { my ($self, $session) = @_; - $session->do_suppressions ? 'Test::Valgrind::Report::Suppressions' - : 'Test::Valgrind::Tool::memcheck::Report' + if ($session->do_suppressions) { + require Test::Valgrind::Parser::Suppressions::Text; + return 'Test::Valgrind::Report::Suppressions'; + } else { + return 'Test::Valgrind::Tool::memcheck::Report'; + } } sub args { @@ -118,7 +137,7 @@ sub args { '--error-limit=yes', ); - push @args, '--track-origins=yes' if $sess->version ge '3.4.0' + push @args, '--track-origins=yes' if $sess->version >= '3.4.0' and not $sess->do_suppressions; push @args, $self->SUPER::args(@_); @@ -149,7 +168,7 @@ You can find documentation for this module with the perldoc command. =head1 COPYRIGHT & LICENSE -Copyright 2009,2010 Vincent Pit, all rights reserved. +Copyright 2009,2010,2011,2013,2015 Vincent Pit, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -161,7 +180,7 @@ package Test::Valgrind::Tool::memcheck::Report; use base qw; -our $VERSION = '1.12'; +our $VERSION = '1.17'; my @kinds = qw< InvalidFree