From: Vincent Pit Date: Tue, 15 Sep 2009 08:29:27 +0000 (+0200) Subject: Introduce the Test::Valgrind::Parser class hierarchy X-Git-Tag: v1.10~18 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FTest-Valgrind.git;a=commitdiff_plain;h=01ace0ff88ffd8fb63dfebcc3b8a8baaf9e0df25 Introduce the Test::Valgrind::Parser class hierarchy --- diff --git a/MANIFEST b/MANIFEST index 7e8fd16..8f37508 100644 --- a/MANIFEST +++ b/MANIFEST @@ -14,7 +14,9 @@ lib/Test/Valgrind/Command.pm lib/Test/Valgrind/Command/Aggregate.pm lib/Test/Valgrind/Command/Perl.pm lib/Test/Valgrind/Command/PerlScript.pm +lib/Test/Valgrind/Parser.pm lib/Test/Valgrind/Parser/Suppressions/Text.pm +lib/Test/Valgrind/Parser/Text.pm lib/Test/Valgrind/Parser/XML/Twig.pm lib/Test/Valgrind/Report.pm lib/Test/Valgrind/Session.pm diff --git a/lib/Test/Valgrind/Parser.pm b/lib/Test/Valgrind/Parser.pm new file mode 100644 index 0000000..e4b68b6 --- /dev/null +++ b/lib/Test/Valgrind/Parser.pm @@ -0,0 +1,86 @@ +package Test::Valgrind::Parser; + +use strict; +use warnings; + +=head1 NAME + +Test::Valgrind::Parser - Base class for Test::Valgrind parsers. + +=head1 VERSION + +Version 1.02 + +=cut + +our $VERSION = '1.02'; + +=head1 DESCRIPTION + +This class is the base for L parsers. + +=cut + +use base qw/Test::Valgrind::Carp/; + +=head1 METHODS + +=head2 C + +=cut + +sub new { + my $class = shift; + $class = ref($class) || $class; + + bless { }, $class; +} + +=head2 C + +Returns the list of parser-specific arguments that are to be passed to C. + +Defaults to the empty list. + +=cut + +sub args { } + +=head2 C + +This method must be implemented when subclassing. + +=cut + +sub parse; + +=head1 SEE ALSO + +L, L. + +=head1 AUTHOR + +Vincent Pit, C<< >>, L. + +You can contact me by mail or on C (vincent). + +=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::Valgrind::Parser + +=head1 COPYRIGHT & LICENSE + +Copyright 2009 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. + +=cut + +1; # End of Test::Valgrind::Parser diff --git a/lib/Test/Valgrind/Parser/Suppressions/Text.pm b/lib/Test/Valgrind/Parser/Suppressions/Text.pm index 4a1db95..d84adbf 100644 --- a/lib/Test/Valgrind/Parser/Suppressions/Text.pm +++ b/lib/Test/Valgrind/Parser/Suppressions/Text.pm @@ -17,27 +17,14 @@ our $VERSION = '1.02'; =head1 DESCRIPTION -This class provides a default C method, so that real tools for which suppressions are meaningful can exploit it by inheriting. - -It's not meant to be used directly as a tool. +This is a L object that can extract suppressions from C's text output. =cut -use base qw/Test::Valgrind::Carp/; +use base qw/Test::Valgrind::Parser::Text Test::Valgrind::Carp/; =head1 METHODS -=head2 C - -Just a croaking stub to remind you not to use this class as a real tool. - -If your tool both inherit from this class and from C, and that you want to dispatch the call to your C to its ancestors', be careful with C which may end up calling this dieing version of C. -The solution is to either put C first in the C<@ISA> list or to explicitely call C instead of C. - -=cut - -sub new { shift->_croak('This mock tool isn\'t meant to be used directly') } - =head2 C Generated reports are C objects. @@ -124,7 +111,7 @@ sub parse { =head1 SEE ALSO -L, L. +L, L. =head1 AUTHOR diff --git a/lib/Test/Valgrind/Parser/Text.pm b/lib/Test/Valgrind/Parser/Text.pm new file mode 100644 index 0000000..e8bb632 --- /dev/null +++ b/lib/Test/Valgrind/Parser/Text.pm @@ -0,0 +1,73 @@ +package Test::Valgrind::Parser::Text; + +use strict; +use warnings; + +=head1 NAME + +Test::Valgrind::Parser::Text - Parse valgrind output as a text stream. + +=head1 VERSION + +Version 1.02 + +=cut + +our $VERSION = '1.02'; + +=head1 DESCRIPTION + +This is a L object that can extract suppressions from C's text output. + +=cut + +use base qw/Test::Valgrind::Parser/; + +=head1 METHODS + +=head2 C + +Returns the arguments needed to tell C to print to the filehandle C<$fh>. + +=cut + +sub args { + my $self = shift; + my ($session, $fh) = @_; + + return ( + $self->SUPER::args(@_), + '--log-fd=' . fileno($fh), + ); +} + +=head1 SEE ALSO + +L, L. + +=head1 AUTHOR + +Vincent Pit, C<< >>, L. + +You can contact me by mail or on C (vincent). + +=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::Valgrind::Parser::Text + +=head1 COPYRIGHT & LICENSE + +Copyright 2009 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. + +=cut + +1; # End of Test::Valgrind::Parser::Text