Add TODO tests for bug #36434
[p5sagit/p5-mst-13.2.git] / t / op / magic.t
index dda07df..154a3cc 100755 (executable)
@@ -36,7 +36,7 @@ sub skip {
     return 1;
 }
 
-print "1..54\n";
+print "1..56\n";
 
 $Is_MSWin32  = $^O eq 'MSWin32';
 $Is_NetWare  = $^O eq 'NetWare';
@@ -47,6 +47,7 @@ $Is_Cygwin   = $^O eq 'cygwin';
 $Is_MacOS    = $^O eq 'MacOS';
 $Is_MPE      = $^O eq 'mpeix';         
 $Is_miniperl = $ENV{PERL_CORE_MINITEST};
+$Is_BeOS     = $^O eq 'beos';
 
 $PERL = ($Is_NetWare            ? 'perl'   :
         ($Is_MacOS || $Is_VMS) ? $^X      :
@@ -249,12 +250,14 @@ EOF
     ok chmod(0755, $script), $!;
     $_ = ($Is_MacOS || $Is_VMS) ? `$perl $script` : `$script`;
     s/\.exe//i if $Is_Dos or $Is_Cygwin or $Is_os2;
+    s{./$script}{$script} if $Is_BeOS; # revert BeOS execvp() side-effect
     s{\bminiperl\b}{perl}; # so that test doesn't fail with miniperl
     s{is perl}{is $perl}; # for systems where $^X is only a basename
     s{\\}{/}g;
     ok((($Is_MSWin32 || $Is_os2) ? uc($_) eq uc($s1) : $_ eq $s1), " :$_:!=:$s1:");
     $_ = `$perl $script`;
     s/\.exe//i if $Is_Dos or $Is_os2;
+    s{./$perl}{$perl} if $Is_BeOS; # revert BeOS execvp() side-effect
     s{\\}{/}g;
     ok((($Is_MSWin32 || $Is_os2) ? uc($_) eq uc($s1) : $_ eq $s1), " :$_:!=:$s1: after `$perl $script`");
     ok unlink($script), $!;
@@ -349,13 +352,13 @@ else {
 }
 
 if ($Is_miniperl) {
-    skip ("miniperl can't rely on loading %Errno");
+    skip ("miniperl can't rely on loading %Errno") for 1..2;
 } else {
    no warnings 'void';
 
 # Make sure Errno hasn't been prematurely autoloaded
 
-   ok !defined %Errno::;
+   ok !keys %Errno::;
 
 # Test auto-loading of Errno when %! is used
 
@@ -423,3 +426,15 @@ ok "@+" eq "10 1 6 10";
     my @y = f();
     ok( $x eq "@y", "return a magic array ($x) vs (@y)" );
 }
+
+# Test for bug [perl #36434]
+{
+    local @ISA;
+    local %ENV;
+    eval { push @ISA, __PACKAGE__ };
+    ok( $@ eq '', 'Push a constant on a magic array', '#36434' );
+    $@ and print "# $@";
+    eval { %ENV = (PATH => __PACKAGE__) };
+    ok( $@ eq '', 'Assign a constant to a magic hash', '#36434' );
+    $@ and print "# $@";
+}