much better coderef sandboxing
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / deploy_methods / coderef-leakage.t
CommitLineData
a89cd737 1#!perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use Test::Exception;
8use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
9use File::Temp;
10
11use lib 't/lib';
12
13use DBICDHTest;
14
15my $dbh = DBICDHTest::dbh();
16my @connection = (sub { $dbh }, { ignore_version => 1 });
17
18DBICDHTest::ready;
19
20use_ok 'DBICVersion_v1';
21my $s = DBICVersion::Schema->connect(@connection);
22my $dm = Translator->new({ schema => $s });
23
24my ($fname1, $fname2) = @_;
25
26{
27 my $fh = File::Temp->new(UNLINK => 0);
28 print {$fh} 'sub leak {} sub { leak() }';
29 $fname1 = $fh->filename;
30 close $fh;
31}
32
33{
34 my $fh = File::Temp->new(UNLINK => 0);
35 print {$fh} 'sub { leak() }';
36 $fname2 = $fh->filename;
37 close $fh;
38}
39
40$dm->_run_perl($fname1, [1]);
41dies_ok { $dm->_run_perl($fname2, [1]) } 'info should not leak between coderefs';
42
43done_testing;
44
45END { unlink $fname1; unlink $fname2 }