Implement Hash/Array ~~ Regex (with tests)
[p5sagit/p5-mst-13.2.git] / t / op / magic.t
index 0ce58d3..28e0dcc 100755 (executable)
@@ -36,7 +36,7 @@ sub skip {
     return 1;
 }
 
-print "1..58\n";
+print "1..59\n";
 
 $Is_MSWin32  = $^O eq 'MSWin32';
 $Is_NetWare  = $^O eq 'NetWare';
@@ -70,7 +70,7 @@ ok $!, $!;
 close FOO; # just mention it, squelch used-only-once
 
 if ($Is_MSWin32 || $Is_NetWare || $Is_Dos || $Is_MPE || $Is_MacOS) {
-    skip('SIGINT not safe on this platform') for 1..4;
+    skip('SIGINT not safe on this platform') for 1..5;
 }
 else {
   # the next tests are done in a subprocess because sh spits out a
@@ -131,7 +131,23 @@ END
     my $todo = ($^O eq 'os2' ? ' # TODO: EMX v0.9d_fix4 bug: wrong nibble? ' : '');
     print $? & 0xFF ? "ok 6$todo\n" : "not ok 6$todo\n";
 
-    $test += 4;
+    open(CMDPIPE, "| $PERL");
+    print CMDPIPE <<'END';
+
+    sub PVBM () { 'foo' }
+    index 'foo', PVBM;
+    my $pvbm = PVBM;
+
+    sub foo { exit 0 }
+
+    $SIG{"INT"} = $pvbm;
+    kill "INT", $$; sleep 1;
+END
+    close CMDPIPE;
+    $? >>= 8 if $^O eq 'VMS';
+    print $? ? "not ok 7\n" : "ok 7\n";
+
+    $test += 5;
 }
 
 # can we slice ENV?
@@ -193,6 +209,9 @@ ok $@ =~ /^Modification of a read-only value attempted/;
        # Cygwin turns the symlink into the real file
        chomp($wd = `pwd`);
        $wd =~ s#/t$##;
+       if ($Is_Cygwin) {
+          $wd = Cygwin::win_to_posix_path(Cygwin::posix_to_win_path($wd, 1));
+       }
     }
     elsif($Is_os2) {
        $wd = Cwd::sys_cwd();
@@ -205,6 +224,7 @@ ok $@ =~ /^Modification of a read-only value attempted/;
     }
     my $perl = ($Is_MacOS || $Is_VMS) ? $^X : "$wd/perl";
     my $headmaybe = '';
+    my $middlemaybe = '';
     my $tailmaybe = '';
     $script = "$wd/show-shebang";
     if ($Is_MSWin32) {
@@ -234,6 +254,12 @@ EOT
     elsif ($Is_VMS) {
       $script = "[]show-shebang";
     }
+    elsif ($Is_Cygwin) {
+      $middlemaybe = <<'EOX'
+$^X = Cygwin::win_to_posix_path(Cygwin::posix_to_win_path($^X, 1));
+$0 = Cygwin::win_to_posix_path(Cygwin::posix_to_win_path($0, 1));
+EOX
+    }
     if ($^O eq 'os390' or $^O eq 'posix-bc' or $^O eq 'vmesa') {  # no shebang
        $headmaybe = <<EOH ;
     eval 'exec ./perl -S \$0 \${1+"\$\@"}'
@@ -242,7 +268,7 @@ EOH
     }
     $s1 = "\$^X is $perl, \$0 is $script\n";
     ok open(SCRIPT, ">$script"), $!;
-    ok print(SCRIPT $headmaybe . <<EOB . <<'EOF' . $tailmaybe), $!;
+    ok print(SCRIPT $headmaybe . <<EOB . $middlemaybe . <<'EOF' . $tailmaybe), $!;
 #!$wd/perl
 EOB
 print "\$^X is $^X, \$0 is $0\n";