X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FSession.pm;h=bbafa5620500c137a9280b6fb0913d0ada8577ce;hb=b62067c81672ff40a3fcda54cb498feae33b752f;hp=01e6dcd9abac107412c6a72a921f44b0020de59c;hpb=9314897b9f4c46057ac5147c0fb4c8fc6dd466a9;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/lib/Test/Valgrind/Session.pm b/lib/Test/Valgrind/Session.pm index 01e6dcd..bbafa56 100644 --- a/lib/Test/Valgrind/Session.pm +++ b/lib/Test/Valgrind/Session.pm @@ -9,11 +9,11 @@ Test::Valgrind::Session - Test::Valgrind session object. =head1 VERSION -Version 1.12 +Version 1.14 =cut -our $VERSION = '1.12'; +our $VERSION = '1.14'; =head1 DESCRIPTION @@ -34,7 +34,17 @@ use base qw; =head1 METHODS -=head2 C<< new search_dirs => \@search_dirs, valgrind => [ $valgrind | \@valgrind ], min_version => $min_version, no_def_supp => $no_def_supp, extra_supps => \@extra_supps >> +=head2 C + + my $tvs = Test::Valgrind::Session->new( + search_dirs => \@search_dirs, + valgrind => $valgrind, # One candidate + valgrind => \@valgrind, # Several candidates + min_version => $min_version, + regen_def_supp => $regen_def_supp, + no_def_supp => $no_def_supp, + extra_supps => \@extra_supps, + ); The package constructor, which takes several options : @@ -62,7 +72,13 @@ Defaults to none. =item * -If C<$no_def_supp> is false, C won't read the default suppression file associated with the tool and the command. +If C<$regen_def_supp> is true, the default suppression file associated with the tool and the command will be forcefully regenerated. + +Defaults to false. + +=item * + +If C<$no_def_supp> is true, C won't read the default suppression file associated with the tool and the command. Defaults to false. @@ -121,19 +137,24 @@ sub new { @$extra_supps = grep { defined && -f $_ && -r _ } @$extra_supps; bless { - valgrind => $valgrind, - version => $version, - no_def_supp => delete($args{no_def_supp}), - extra_supps => $extra_supps, + valgrind => $valgrind, + version => $version, + regen_def_supp => delete($args{regen_def_supp}), + no_def_supp => delete($args{no_def_supp}), + extra_supps => $extra_supps, }, $class; } =head2 C + my $valgrind_path = $tvs->valgrind; + The path to the selected C executable. =head2 C + my $valgrind_version = $tvs->version; + The L object associated to the selected C. =cut @@ -147,23 +168,41 @@ sub version { return $version; } +=head2 C + + my $regen_def_supp = $tvs->regen_def_supp; + +Read-only accessor for the C option. + +=cut + =head2 C + my $no_def_supp = $tvs->no_def_supp; + Read-only accessor for the C option. =cut -eval "sub $_ { \$_[0]->{$_} }" for qw; +eval "sub $_ { \$_[0]->{$_} }" for qw; =head2 C + my @extra_supps = $tvs->extra_supps; + Read-only accessor for the C option. =cut sub extra_supps { @{$_[0]->{extra_supps} || []} } -=head2 C<< run action => $action, tool => $tool, command => $command >> +=head2 C + + $tvs->run( + action => $action, + tool => $tool, + command => $command, + ); Runs the command C<$command> through C with the tool C<$tool>, which will report to the action C<$action>. @@ -203,9 +242,14 @@ sub _run { push @supp_args, '--gen-suppressions=all'; } elsif (not $self->no_def_supp) { my $def_supp = $self->def_supp_file; + my $forced; + if ($self->regen_def_supp and -e $def_supp) { + 1 while unlink $def_supp; + $forced = 1; + } if (defined $def_supp and not -e $def_supp) { $self->report($self->report_class->new_diag( - "Generating suppressions..." + 'Generating suppressions' . ($forced ? ' (forced)' : '') . '...' )); require Test::Valgrind::Suppressions; Test::Valgrind::Suppressions->generate( @@ -358,6 +402,8 @@ sub def_supp_file { =head2 C + my @suppressions = $tvs->suppressions; + Returns the list of all the suppressions that will be passed to C. Honors L and L. @@ -378,6 +424,12 @@ sub suppressions { =head2 C + $tvs->start( + action => $action, + tool => $tool, + command => $command, + ); + Starts the action and tool associated to the current run. It's automatically called at the beginning of L. @@ -405,7 +457,9 @@ sub start { return; } -=head2 C +=head2 C + + $tvs->abort($msg); Forwards to C<< ->action->abort >> after unshifting the session object to the argument list. @@ -417,7 +471,9 @@ sub abort { $self->action->abort($self, @_); } -=head2 C +=head2 C + + $tvs->report($report); Forwards to C<< ->action->report >> after unshifting the session object to the argument list. @@ -438,6 +494,8 @@ sub report { =head2 C + $tvs->finish; + Finishes the action and tool associated to the current run. It's automatically called at the end of L. @@ -462,6 +520,8 @@ sub finish { =head2 C + my $status = $tvs->status; + Returns the status code of the last run of the session. =cut @@ -493,7 +553,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 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.