use strict;
use warnings;
use Test::More tests => 2;
use File::Path;
use Test::Run::Trap::Obj;
use vars qw(@leaked_file_rets);
package MyTestRun::LeakedCheck;
use Moose;
extends("Test::Run::Obj");
sub _report_leaked_files
{
my ($self, $args) = @_;
push @main::leaked_file_rets, [sort { $a cmp $b } @{$args->{leaked_files}}];
}
package main;
my $sample_tests_dir = File::Spec->catdir("t", "sample-tests");
my $leaked_files_dir = File::Spec->catdir($sample_tests_dir, "leaked-files-dir");
my $leaked_file = File::Spec->catfile($leaked_files_dir, "hello.txt");
my $leak_test_file = File::Spec->catfile($sample_tests_dir, "leak-file.t");
mkdir($leaked_files_dir, 0777);
{
{
local (*O);
open O, ">", $leaked_file;
print O "This is the file hello.txt";
close(O);
}
@leaked_file_rets = ();
my $got = Test::Run::Trap::Obj->trap_run({
class => "MyTestRun::LeakedCheck",
args =>
[
test_files => [$leak_test_file],
Leaked_Dir => $leaked_files_dir,
]
});
# TEST
is_deeply(
\@leaked_file_rets,
[["new-file.txt"]],
"Leaked files reported correctly",
);
# TEST
$got->field_is("die", undef(), "Leaked files' run did not die from an exception");
# Cleanup afterwards.
rmtree([$leaked_files_dir], 0, 0);
}