]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/commitdiff
Let the command filter reports
authorVincent Pit <vince@profvince.com>
Sat, 2 May 2009 10:21:27 +0000 (12:21 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 2 May 2009 10:21:27 +0000 (12:21 +0200)
lib/Test/Valgrind/Command.pm
lib/Test/Valgrind/Session.pm

index eb5a3476a2e83cc3cbc345dc1fc659b9ef89bc10..61f72fc3112908630721ce6a57cca5c561d25fb0 100644 (file)
@@ -98,6 +98,17 @@ This method must be implemented when subclassing.
 
 sub suppressions_tag;
 
+=head2 C<filter $session, $report>
+
+The <$session> calls this method after receiving a report from the tool and before forwarding it to the action.
+You can either return a mangled C<$report> (which does not need to be a clone of the original) or C<undef> if you want the action to ignore it completely.
+
+Defaults to the identity function.
+
+=cut
+
+sub filter { $_[2] }
+
 =head1 SEE ALSO
 
 L<Test::Valgrind>, L<Test::Valgrind::Session>.
index 3174bdef84d6962962d1457bbf5882405cb0ea05..1e8857e7a4f3f37e8f63108e22427dc62fcf88e1 100644 (file)
@@ -412,8 +412,14 @@ Forwards to C<< ->action->report >> after unshifting the session object to the a
 =cut
 
 sub report {
- my $self = shift;
- $self->action->report($self, @_);
+ my ($self, $report) = @_;
+
+ return unless defined $report;
+
+ $report = $self->command->filter($self, $report);
+ return unless defined $report;
+
+ $self->action->report($self, $report);
 }
 
 =head2 C<finish>