]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/blobdiff - t/30-bad.t
Output what we got when t/30-bad.t fails
[perl/modules/Test-Valgrind.git] / t / 30-bad.t
index 2237a7e47f425a986e48c177a8da26cb6c6b72cc..ac5c9be21207cfc7fbe78a5574cd07b41c1452d8 100644 (file)
@@ -3,44 +3,60 @@
 use strict;
 use warnings;
 
-use Config qw/%Config/;
-
 use Test::More;
 
+my $dbg;
+
 sub tester {
- my ($a, $desc) = @_;
+ my ($num, $desc) = @_;
  my $passed;
- my $dbg = eval "Test::Valgrind::DEBUGGING()";
- if ($desc =~ /still\s+reachable/) {
-  $passed = $a >= 9900 && $a < 10100;
+ if (!defined $dbg) {
+  eval "
+   use lib qw{blib/arch};
+   require XSLoader;
+   XSLoader::load('Test::Valgrind', \$Test::Valgrind::VERSION);
+  ";
+  if ($@) {
+   my $err = $@;
+   $dbg = 0;
+   chomp $err;
+   diag "XS test code not available ($err)";
+  } else {
+   my $ret = eval "Test::Valgrind::DEBUGGING()";
+   $dbg = $@ ? 0 : $ret;
+  }
+ }
+ if ($desc =~ /definitely\s+lost/) {
+  $passed = $num >= 9900 && $num < 10100;
   if ($dbg) {
    ok($passed, $desc);
+   diag "    Got $num instead of 0." unless $passed;
   } else {
    TODO: {
     local $TODO = "Leak count may be off on non-debugging perls";
     ok($passed, $desc);
    }
-   return 1;
+   $passed = 1;
   }
  } else {
-  $passed = defined $a && $a == 0;
-  is($a, 0, $desc);
+  $passed = defined $num && $num == 0;
+  is($num, 0, $desc);
  }
  return $passed;
 }
 
-eval "
- require XSLoader;
- XSLoader::load('Test::Valgrind', 0.051);
-";
+use lib qw{blib/archpub};
+eval 'use Test::Valgrind cb => \&tester';
 if ($@) {
- plan skip_all => "XS test code not available ($@)";
+ diag $@;
+ plan skip_all => 'Test::Valgrind is required to run test your distribution with valgrind';
 } else {
- use lib qw{blib/archpub};
- eval 'use Test::Valgrind cb => \&tester;';
- if ($@) {
-  plan skip_all => 'Test::Valgrind is required to run test your distribution with valgrind';
- } else {
+ eval "
+  use lib qw{blib/arch};
+  require XSLoader;
+  XSLoader::load('Test::Valgrind', \$Test::Valgrind::VERSION);
+ ";
+ unless ($@) {
   Test::Valgrind::leak();
  }
 }