Test-LeakTrace
view release on metacpan or search on metacpan
lib/Test/LeakTrace.pm view on Meta::CPAN
$block->();
};
if($@){
_finish(-silent);
die $@;
}
return _finish($mode);
}
sub leaked_refs(&){
my($block) = @_;
return _do_leaktrace($block, 'leaked_refs', 0);
}
sub leaked_info(&){
my($block) = @_;
return _do_leaktrace($block, 'leaked_refs', 1);
}
sub leaked_count(&){
my($block) = @_;
return scalar _do_leaktrace($block, 'leaked_count', 0);
}
sub leaktrace(&;$){
my($block, $mode) = @_;
_do_leaktrace($block, 'leaktrace', 1, defined($mode) ? $mode : -simple);
return;
}
sub leaks_cmp_ok(&$$;$){
my($block, $cmp_op, $expected, $description) = @_;
my $Test = __PACKAGE__->builder;
if(!_runops_installed()){
my $mod = exists $INC{'Devel/Cover.pm'} ? 'Devel::Cover' : 'strange runops routines';
return $Test->ok(1, "skipped (under $mod)");
}
# calls to prepare cache in $block
lib/Test/LeakTrace.pm view on Meta::CPAN
open local(*STDERR), '>', \(my $content = '');
$block->(); # calls it again because opening *STDERR changes the run-time environment
_do_leaktrace($block, 'leaktrace', 1, -verbose);
$Test->diag($content);
}
return $result;
}
sub no_leaks_ok(&;$){
# ($block, $description)
splice @_, 1, 0, ('<=', 0); # ($block, '<=', 0, $description);
goto &leaks_cmp_ok;
}
1;
__END__
=for stopwords sv gfx
( run in 1.126 second using v1.01-cache-2.11-cpan-3b35f9de6a3 )