]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/commitdiff
Add 'regen_def_supp', an option to regenerate the suppressions
authorVincent Pit <perl@profvince.com>
Fri, 30 Oct 2015 15:47:59 +0000 (13:47 -0200)
committerVincent Pit <perl@profvince.com>
Fri, 30 Oct 2015 15:50:36 +0000 (13:50 -0200)
And use it in t/10-good.t so that all the tests are run with a fresh
suppression file.

lib/Test/Valgrind.pm
lib/Test/Valgrind/Session.pm
t/10-good.t

index 5e95a9fffb87ed30cc37ce0752eba1cbf54b7fae..a1f2e3231e3a77f4f4ef80ac8834d58140789e18 100644 (file)
@@ -108,11 +108,11 @@ Ignored if you supply your own custom C<action>, otherwise defaults to false.
 
 =item *
 
-C<< extra_supps => \@files >>
+C<< regen_def_supp => $bool >>
 
-Also use suppressions from C<@files> besides C<perl>'s.
+If true, forcefully regenerate the default suppression file.
 
-Defaults to empty.
+Defaults to false.
 
 =item *
 
@@ -122,6 +122,14 @@ If true, do not use the default suppression file.
 
 Defaults to false.
 
+=item *
+
+C<< extra_supps => \@files >>
+
+Also use suppressions from C<@files> besides C<perl>'s.
+
+Defaults to empty.
+
 =back
 
 =cut
@@ -168,7 +176,7 @@ sub analyse {
  my $sess = eval {
   Test::Valgrind::Session->new(
    min_version => $tool->requires_version,
-   map { $_ => delete $args{$_} } qw<extra_supps no_def_supp>
+   map { $_ => delete $args{$_} } qw<regen_def_supp no_def_supp extra_supps>
   );
  };
  unless ($sess) {
index 4aefd49b920d23c62887b2e56abc5a0c91afbbeb..bbafa5620500c137a9280b6fb0913d0ada8577ce 100644 (file)
@@ -37,12 +37,13 @@ use base qw<Test::Valgrind::Carp>;
 =head2 C<new>
 
     my $tvs = Test::Valgrind::Session->new(
-     search_dirs => \@search_dirs,
-     valgrind    => $valgrind,  # One candidate
-     valgrind    => \@valgrind, # Several candidates
-     min_version => $min_version,
-     no_def_supp => $no_def_supp,
-     extra_supps => \@extra_supps,
+     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 :
@@ -71,7 +72,13 @@ Defaults to none.
 
 =item *
 
-If C<$no_def_supp> is false, C<valgrind> 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<valgrind> won't read the default suppression file associated with the tool and the command.
 
 Defaults to false.
 
@@ -130,10 +137,11 @@ 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;
 }
 
@@ -160,6 +168,14 @@ sub version {
  return $version;
 }
 
+=head2 C<regen_def_supp>
+
+    my $regen_def_supp = $tvs->regen_def_supp;
+
+Read-only accessor for the C<regen_def_supp> option.
+
+=cut
+
 =head2 C<no_def_supp>
 
     my $no_def_supp = $tvs->no_def_supp;
@@ -168,7 +184,7 @@ Read-only accessor for the C<no_def_supp> option.
 
 =cut
 
-eval "sub $_ { \$_[0]->{$_} }" for qw<valgrind no_def_supp>;
+eval "sub $_ { \$_[0]->{$_} }" for qw<valgrind regen_def_supp no_def_supp>;
 
 =head2 C<extra_supps>
 
@@ -226,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(
index 0d5696759d2c944fe892aff9dc40e9f60c84c960..fee58e3ef39e653998a5ed1ebbbd2388f3c16237 100644 (file)
@@ -9,7 +9,10 @@ use lib 't/lib';
 
 eval {
  require Test::Valgrind;
- Test::Valgrind->import(diag => 1);
+ Test::Valgrind->import(
+  diag           => 1,
+  regen_def_supp => 1,
+ );
 };
 if ($@) {
  diag $@;