]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - t/13-reap-ctl.t
Typo in test description
[perl/modules/Scope-Upper.git] / t / 13-reap-ctl.t
index f9ca9cdb6ed267eae3bc5de77950cbe2dbfb034d..cff7601f9432b7053a4fa0797c93d46f4815c236 100644 (file)
@@ -3,9 +3,9 @@
 use strict;
 use warnings;
 
-use Test::More tests => 28;
+use Test::More tests => 38;
 
-use Scope::Upper qw/reap/;
+use Scope::Upper qw/reap UP HERE/;
 
 our ($x, $y);
 
@@ -16,7 +16,7 @@ sub check { ++$y }
  {
   local $x = 2;
   {
-   reap \&check => 1;
+   reap \&check => UP;
   }
   is $x, 2,     'goto 1 [not yet - x]';
   is $y, undef, 'goto 1 [not yet - y]';
@@ -39,7 +39,7 @@ $y = undef;
   {
    local $x = 3;
    {
-    reap \&check => 2;
+    reap \&check => UP UP;
    }
    is $x, 3,     'goto 2 [not yet - x]';
    is $y, undef, 'goto 2 [not yet - y]';
@@ -64,7 +64,7 @@ $y = undef;
    {
     {
      local $x = 3;
-     reap \&check => 3;
+     reap \&check => UP UP UP;
      is $x, 3,     'die - reap outside eval [not yet 1 - x]';
      is $y, undef, 'die - reap outside eval [not yet 1 - y]';
     }
@@ -88,7 +88,7 @@ $y = undef;
   {
    {
     local $x = 3;
-    reap \&check => 2;
+    reap \&check => UP UP;
     is $x, 3,     'die - reap at eval [not yet 1 - x]';
     is $y, undef, 'die - reap at eval [not yet 1 - y]';
    }
@@ -109,7 +109,7 @@ $y = undef;
   {
    {
     local $x = 3;
-    reap \&check => 1;
+    reap \&check => UP;
     is $x, 3,     'die - reap inside eval [not yet 1 - x]';
     is $y, undef, 'die - reap inside eval [not yet 1 - y]';
    }
@@ -121,3 +121,39 @@ $y = undef;
  is $x, 1, 'die - reap inside eval [ok - x]';
  is $y, 1, 'die - reap inside eval [ok - y]';
 }
+
+$y = undef;
+{
+ local $x = 1;
+ eval {
+  local $x = 2;
+  eval {
+   local $x = 3;
+   reap { ++$y; die "reaped\n" } => HERE;
+   is $x, 3,     'die in reap at eval [not yet - x]';
+   is $y, undef, 'die in reap at eval [not yet - y]';
+  }; # should trigger here, but the die isn't catched by this eval
+  die "failed\n";
+ };
+ is $@, "reaped\n", 'die in reap at eval [ok - $@]';
+ is $x, 1, 'die in reap at eval [ok - x]';
+ is $y, 1, 'die in reap at eval [ok - y]';
+}
+
+$y = undef;
+{
+ local $x = 1;
+ eval {
+  local $x = 2;
+  {
+   local $x = 3;
+   reap { ++$y; die "reaped\n" } => HERE;
+   is $x, 3,     'die in reap inside eval [not yet - x]';
+   is $y, undef, 'die in reap inside eval [not yet - y]';
+  } # should trigger here
+  die "failed\n";
+ };
+ is $@, "reaped\n", 'die in reap inside eval [ok - $@]';
+ is $x, 1, 'die in reap inside eval [ok - x]';
+ is $y, 1, 'die in reap inside eval [ok - y]';
+}