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();
}
}