X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F30-bad.t;h=ac5c9be21207cfc7fbe78a5574cd07b41c1452d8;hb=c28e54f56f6f36e3d6364b1cd07048bb288aa9d7;hp=2237a7e47f425a986e48c177a8da26cb6c6b72cc;hpb=cb1a72bfb539b0dbb8d56a24d77bfc23d935e397;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/t/30-bad.t b/t/30-bad.t index 2237a7e..ac5c9be 100644 --- a/t/30-bad.t +++ b/t/30-bad.t @@ -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(); } }