diff options
Diffstat (limited to 't')
-rw-r--r-- | t/basic.t | 2 | ||||
-rw-r--r-- | t/lexical-env.t | 53 |
2 files changed, 53 insertions, 2 deletions
@@ -35,8 +35,6 @@ use Eval::Closure; my $foo = [1, 2, 3]; my $code = eval_closure( - # not sure if strict leaking into evals is intended, i think i remember - # it being changed in newer perls source => 'do { no strict; sub { $foo } }', ); diff --git a/t/lexical-env.t b/t/lexical-env.t new file mode 100644 index 0000000..24d4885 --- /dev/null +++ b/t/lexical-env.t @@ -0,0 +1,53 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Fatal; + +use Eval::Closure; + +{ + my $source = 'sub { ++$foo }'; + + { + like( + exception { + eval_closure(source => $source); + }, + qr/Global symbol "\$foo/, + "errors with strict enabled" + ); + } + + { + no strict; + my $c1; + is( + exception { + $c1 = eval_closure(source => $source); + }, + undef, + "no errors with no strict" + ); + is($c1->(), 1); + is($c1->(), 2); + } +} + +{ + my $source = 'our $less; BEGIN { $less = $^H{less} } sub { $less }'; + + { + my $c1 = eval_closure(source => $source); + is($c1->(), undef, "nothing in the hint hash"); + } + + { + local $TODO = 'not sure how exactly to get %^H copied'; + use less "stuff"; + my $c1 = eval_closure(source => $source); + is($c1->(), 'stuff', "use less put stuff in the hints hash"); + } +} + +done_testing; |