]> 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 f3313b06d04a5ea81fb35657dfe61e231a6d5669..ac5c9be21207cfc7fbe78a5574cd07b41c1452d8 100644 (file)
@@ -3,28 +3,44 @@
 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;
 }
@@ -40,10 +56,7 @@ if ($@) {
   require XSLoader;
   XSLoader::load('Test::Valgrind', \$Test::Valgrind::VERSION);
  ";
- if ($@) {
-  diag $@;
-  plan skip_all => "XS test code not available";
- } else {
+ unless ($@) {
   Test::Valgrind::leak();
  }
 }