=head1 VERSION
-Version 1.02
+Version 1.11
=cut
-our $VERSION = '1.02';
+our $VERSION = '1.11';
=head1 DESCRIPTION
-This tool parses the XML output of a C<memcheck> run with L<XML::Twig>.
+This class contains the information required by the session for running the C<memcheck> tool.
=cut
sub suppressions_tag { 'memcheck-' . $_[1]->version }
-=head2 C<report_class_analysis $session>
+=head2 C<parser_class $session>
-This tool emits C<Test::Valgrind::Tool::memcheck::Report> object reports in analysis mode.
+This tool uses a L<Test::Valgrind::Parser::XML::Twig> parser in analysis mode, and a L<Test::Valgrind::Parser::Suppressions::Text> parser in suppressions mode.
=cut
-sub report_class_analysis { 'Test::Valgrind::Tool::memcheck::Report' }
+sub parser_class {
+ my ($self, $session) = @_;
+
+ my $class = $session->do_suppressions
+ ? 'Test::Valgrind::Parser::Suppressions::Text'
+ : 'Test::Valgrind::Parser::XML::Twig';
+
+ local $@;
+ eval "require $class";
+
+ return $class;
+}
+
+=head2 C<report_class $session>
+
+This tool emits C<Test::Valgrind::Tool::memcheck::Report> object reports in analysis mode, and C<Test::Valgrind::Report::Suppressions> object reports in suppressions mode.
+
+=cut
+
+sub report_class {
+ my ($self, $session) = @_;
+
+ $session->do_suppressions ? 'Test::Valgrind::Report::Suppressions'
+ : 'Test::Valgrind::Tool::memcheck::Report'
+}
sub args {
my $self = shift;
'--error-limit=yes',
);
- unless ($sess->do_suppressions) {
- push @args, '--track-origins=yes' if $sess->version ge '3.4.0';
- push @args, '--xml=yes';
- }
+ push @args, '--track-origins=yes' if $sess->version ge '3.4.0'
+ and not $sess->do_suppressions;
push @args, $self->SUPER::args(@_);
L<Test::Valgrind>, L<Test::Valgrind::Tool>.
-L<XML::Twig>.
-
=head1 AUTHOR
Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
use base qw/Test::Valgrind::Report/;
-our $VERSION = '1.02';
+our $VERSION = '1.11';
my @kinds = qw/
InvalidFree