]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - t/55-yield-target.t
Merge perl 5.24 fixes from davem
[perl/modules/Scope-Upper.git] / t / 55-yield-target.t
index 594a04be93aa1f815dff46f7d92d846608c43e54..ced05c8bbcdca6c6d7fb5ed9b80b887420210d07 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 
 use Test::More tests => 18;
 
-use Scope::Upper qw<yield>;
+use Scope::Upper qw<yield leave>;
 
 my @res;
 
@@ -63,7 +63,9 @@ is_deeply \@res, [ 15, 19 ], 'yield() in for () { ... }';
 is $loop, 21, 'yield() exited while';
 is_deeply \@res, [ 20, 23 ], 'yield() in while () { ... }';
 
-{
+SKIP: {
+ skip '"eval { $str =~ s/./die q[foo]/e }" breaks havoc on perl 5.8 and below'
+                                                           => 1 if "$]" < 5.010;
  my $s = 'a';
  local $@;
  eval {
@@ -72,7 +74,7 @@ is_deeply \@res, [ 20, 23 ], 'yield() in while () { ... }';
  my $err  = $@;
  my $line = __LINE__-3;
  like $err,
-      qr/^yield\(\) cannot target a substitution context at \Q$0\E line $line/,
+      qr/^yield\(\) can't target a substitution context at \Q$0\E line $line/,
       'yield() cannot exit subst';
 }
 
@@ -81,6 +83,12 @@ SKIP: {
                                                                 if "$]" < 5.010;
 
  @res = eval <<'TESTCASE';
+  BEGIN {
+   if ("$]" >= 5.017_011) {
+    require warnings;
+    warnings->unimport('experimental::smartmatch');
+   }
+  }
   use feature 'switch';
   (24, do {
    given (25) {
@@ -96,6 +104,12 @@ TESTCASE
  # end of the enclosing given block.
  @res = ();
  eval <<'TESTCASE';
+  BEGIN {
+   if ("$]" >= 5.017_011) {
+    require warnings;
+    warnings->unimport('experimental::smartmatch');
+   }
+  }
   use feature 'switch';
   @res = (28, do {
    given (29) {
@@ -113,6 +127,12 @@ TESTCASE
  # But calling yield() in when() in for() sends us at the next iteration.
  @res = ();
  eval <<'TESTCASE';
+  BEGIN {
+   if ("$]" >= 5.017_011) {
+    require warnings;
+    warnings->unimport('experimental::smartmatch');
+   }
+  }
   use feature 'switch';
   @res = (31, do {
    for (32, 33) {