]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/commitdiff
Introduce the Test::Valgrind::Parser class hierarchy
authorVincent Pit <vince@profvince.com>
Tue, 15 Sep 2009 08:29:27 +0000 (10:29 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 15 Sep 2009 08:36:50 +0000 (10:36 +0200)
MANIFEST
lib/Test/Valgrind/Parser.pm [new file with mode: 0644]
lib/Test/Valgrind/Parser/Suppressions/Text.pm
lib/Test/Valgrind/Parser/Text.pm [new file with mode: 0644]

index 7e8fd165b3df06960bddc25ff7abfbd047ee7b95..8f37508141a04034d05ee0186365395331d8db7f 100644 (file)
--- 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 (file)
index 0000000..e4b68b6
--- /dev/null
@@ -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<Test::Valgrind> parsers.
+
+=cut
+
+use base qw/Test::Valgrind::Carp/;
+
+=head1 METHODS
+
+=head2 C<new>
+
+=cut
+
+sub new {
+ my $class = shift;
+ $class = ref($class) || $class;
+
+ bless { }, $class;
+}
+
+=head2 C<args $session, $fh>
+
+Returns the list of parser-specific arguments that are to be passed to C<valgrind>.
+
+Defaults to the empty list.
+
+=cut
+
+sub args { }
+
+=head2 C<parse $session, $fh>
+
+This method must be implemented when subclassing.
+
+=cut
+
+sub parse;
+
+=head1 SEE ALSO
+
+L<Test::Valgrind>, L<Test::Valgrind::Session>.
+
+=head1 AUTHOR
+
+Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
+
+You can contact me by mail or on C<irc.perl.org> (vincent).
+
+=head1 BUGS
+
+Please report any bugs or feature requests to C<bug-test-valgrind at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Valgrind>.
+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
index 4a1db955a5b71bb5c897858cb773de73dbd0962f..d84adbf2ac4b112c66a44ccfad7905f343bca215 100644 (file)
@@ -17,27 +17,14 @@ our $VERSION = '1.02';
 
 =head1 DESCRIPTION
 
-This class provides a default C<parse_suppressions> 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<Test::Valgrind::Parser> object that can extract suppressions from C<valgrind>'s text output.
 
 =cut
 
-use base qw/Test::Valgrind::Carp/;
+use base qw/Test::Valgrind::Parser::Text Test::Valgrind::Carp/;
 
 =head1 METHODS
 
-=head2 C<new>
-
-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<Test::Valgrind::Tool>, and that you want to dispatch the call to your C<new> to its ancestors', be careful with C<SUPER> which may end up calling this dieing version of C<new>.
-The solution is to either put C<Test::Valgrind::Tool> first in the C<@ISA> list or to explicitely call C<Test::Valgrind::Tool::new> instead of C<SUPER::new>.
-
-=cut
-
-sub new { shift->_croak('This mock tool isn\'t meant to be used directly') }
-
 =head2 C<report_class>
 
 Generated reports are C<Test::Valgrind::Report::Suppressions> objects.
@@ -124,7 +111,7 @@ sub parse {
 
 =head1 SEE ALSO
 
-L<Test::Valgrind>, L<Test::Valgrind::Tool>.
+L<Test::Valgrind>, L<Test::Valgrind::Parser::Text>.
 
 =head1 AUTHOR
 
diff --git a/lib/Test/Valgrind/Parser/Text.pm b/lib/Test/Valgrind/Parser/Text.pm
new file mode 100644 (file)
index 0000000..e8bb632
--- /dev/null
@@ -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<Test::Valgrind::Parser> object that can extract suppressions from C<valgrind>'s text output.
+
+=cut
+
+use base qw/Test::Valgrind::Parser/;
+
+=head1 METHODS
+
+=head2 C<args $session, $fh>
+
+Returns the arguments needed to tell C<valgrind> 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<Test::Valgrind>, L<Test::Valgrind::Parser>.
+
+=head1 AUTHOR
+
+Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
+
+You can contact me by mail or on C<irc.perl.org> (vincent).
+
+=head1 BUGS
+
+Please report any bugs or feature requests to C<bug-test-valgrind at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Valgrind>.
+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