X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FTool.pm;h=eb450c5faf415273377c95e7e90da43b5689d589;hb=1032312bd6aa3f16153e3ba3fdf6b4d2531dea8c;hp=4aea0fba6f235584d96fbef1da37c3cdf0181b5c;hpb=d83358595540f8645467c2d1a2f658fa74b14c72;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/lib/Test/Valgrind/Tool.pm b/lib/Test/Valgrind/Tool.pm index 4aea0fb..eb450c5 100644 --- a/lib/Test/Valgrind/Tool.pm +++ b/lib/Test/Valgrind/Tool.pm @@ -9,11 +9,11 @@ Test::Valgrind::Tool - Base class for Test::Valgrind tools. =head1 VERSION -Version 1.13 +Version 1.19 =cut -our $VERSION = '1.13'; +our $VERSION = '1.19'; =head1 DESCRIPTION @@ -24,6 +24,8 @@ They are expected to function both in suppressions generation and in analysis mo =cut +use Test::Valgrind::Util; + use base qw; =head1 METHODS @@ -55,10 +57,10 @@ sub new { my %args = @_; if ($class eq __PACKAGE__) { - my $tool = delete $args{tool} || 'memcheck'; - $tool =~ s/[^\w:]//g; - $tool = __PACKAGE__ . "::$tool" if $tool !~ /::/; - $class->_croak("Couldn't load tool $tool: $@") unless eval "require $tool; 1"; + my ($tool, $msg) = Test::Valgrind::Util::validate_subclass( + delete $args{tool} || 'memcheck', + ); + $class->_croak($msg) unless defined $tool; return $tool->new(%args); } @@ -81,7 +83,7 @@ sub new_trainer { } my $parser_class = $tvt->parser_class($session); -Returns the class from which the parser for this tool output will be instanciated. +Returns the class from which the parser for this tool output will be instantiated. This method must be implemented when subclassing. @@ -178,7 +180,7 @@ You can find documentation for this module with the perldoc command. =head1 COPYRIGHT & LICENSE -Copyright 2009,2010,2011 Vincent Pit, all rights reserved. +Copyright 2009,2010,2011,2013,2015,2016 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.