shared hash keys and ++/--
[p5sagit/p5-mst-13.2.git] / t / op / stat.t
index 7a2690c..5711236 100755 (executable)
@@ -9,12 +9,13 @@ BEGIN {
 
 use Config;
 
-print "1..58\n";
+print "1..59\n";
 
 $Is_MSWin32 = $^O eq 'MSWin32';
 $Is_NetWare = $^O eq 'NetWare';
 $Is_Dos = $^O eq 'dos';
 $Is_Cygwin = $^O eq 'cygwin';
+$Is_MPE = $^O eq 'mpeix';
 $Is_Dosish = $Is_Dos || $^O eq 'os2' || $Is_MSWin32 || $Is_NetWare || $Is_Cygwin;
 chop($cwd = (($Is_MSWin32 || $Is_NetWare) ? `cd` : `pwd`));
 
@@ -53,7 +54,7 @@ if (open(FOO, ">Op.stat.tmp")) {
   print "# open failed: $!\nnot ok 1\nnot ok 2\n";
 }
 
-if ($Is_Dosish) { unlink "Op.stat.tmp2"}
+if ($Is_Dosish || $Is_MPE) { unlink "Op.stat.tmp2"}
 else {
     `rm -f Op.stat.tmp2;ln Op.stat.tmp Op.stat.tmp2; chmod 644 Op.stat.tmp`;
 }
@@ -61,13 +62,13 @@ else {
 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
     $blksize,$blocks) = stat('Op.stat.tmp');
 
-if ($Is_Dosish || $Config{dont_use_nlink})
+if ($Is_Dosish || $Is_MPE || $Config{dont_use_nlink})
     {print "ok 3 # skipped: no link count\n";} 
 elsif ($nlink == 2)
     {print "ok 3\n";} 
 else {print "# \$nlink is |$nlink|\nnot ok 3\n";}
 
-if (   $Is_Dosish
+if (   $Is_Dosish || $Is_MPE
         # Solaris tmpfs bug
        || ($cwd =~ m#^/tmp# and $mtime && $mtime==$ctime && $^O eq 'solaris')
     || $cwd =~ m#$Config{'afsroot'}/#
@@ -92,13 +93,13 @@ else             { `touch Op.stat.tmp` }
 if (-z 'Op.stat.tmp') {print "ok 5\n";} else {print "not ok 5\n";}
 if (! -s 'Op.stat.tmp') {print "ok 6\n";} else {print "not ok 6\n";}
 
-$Is_MSWin32 ? `cmd /c echo hi > Op.stat.tmp` : `echo hi >Op.stat.tmp`;
+`echo hi >Op.stat.tmp`;
 if (! -z 'Op.stat.tmp') {print "ok 7\n";} else {print "not ok 7\n";}
 if (-s 'Op.stat.tmp') {print "ok 8\n";} else {print "not ok 8\n";}
 
 unlink 'Op.stat.tmp' or print "# unlink failed: $!\n";
 $olduid = $>;          # can't test -r if uid == 0
-$Is_MSWin32 ? `cmd /c echo hi > Op.stat.tmp` : `echo hi >Op.stat.tmp`;
+`echo hi >Op.stat.tmp`;
 chmod 0,'Op.stat.tmp';
 eval '$> = 1;';                # so switch uid (may not be implemented)
 if (!$> || $Is_Dos || $Is_Cygwin || ! -r 'Op.stat.tmp') {print "ok 9\n";} else {print "not ok 9\n";}
@@ -172,16 +173,16 @@ else
     {print "not ok 33\n";}
 if (! -b '.') {print "ok 34\n";} else {print "not ok 34\n";}
 
-if ($^O eq 'mpeix' or $^O eq 'amigaos' or $Is_Dosish or $Is_Cygwin) {
+if ($Is_MPE or $^O eq 'amigaos' or $Is_Dosish or $Is_Cygwin) {
   print "ok 35 # skipped: no -u\n"; goto tty_test;
 }
 
 $cnt = $uid = 0;
 
 die "Can't run op/stat.t test 35 without pwd working" unless $cwd;
-my @bin = grep {-d} ($^O eq 'machten' ?
-                    qw(/usr/bin /bin) :
-                    qw(/sbin /usr/sbin /bin /usr/bin));
+my @bin = grep {-d && -r && -x} ($^O eq 'machten' ?
+                                 qw(/usr/bin /bin) :
+                                 qw(/sbin /usr/sbin /bin /usr/bin));
 unless (@bin) { print ("not ok 35\n"), goto tty_test; }
 for my $bin (@bin) {
     opendir BIN, $bin or die "Can't opendir $bin: $!";
@@ -207,14 +208,11 @@ tty_test:
 # can be set to skip the tests that need a tty.
 unless($ENV{PERL_SKIP_TTY_TEST}) {
     if ($Is_MSWin32 || $Is_NetWare) {
-       print "ok 36\n";
-       print "ok 37\n";
+       print "ok 36 # Skip: $^O\n";
+       print "ok 37 # Skip: $^O\n";
     }
     else {
-       my $TTY = "/dev/tty";
-
-       $TTY = "/dev/ttyp0" if $^O eq 'rhapsody';
-
+       my $TTY = $^O eq 'rhapsody' ? "/dev/ttyp0" : "/dev/tty";
        if (defined $TTY) {
            unless (open(TTY, $TTY)) {
                print STDERR "Can't open $TTY--run t/TEST outside of make.\n";
@@ -231,10 +229,7 @@ unless($ENV{PERL_SKIP_TTY_TEST}) {
     if (-t)       {print "ok 39\n";} else {print "not ok 39\n";}
 }
 else {
-    print "ok 36\n";
-    print "ok 37\n";
-    print "ok 38\n";
-    print "ok 39\n";
+    for (36..39) { print "ok $_ # Skip: PERL_SKIP_TTY_TEST\n" }
 }
 open(null,"/dev/null");
 if (! -t null || -e '/xenix' || $^O eq 'machten' || $Is_MSWin32 || $Is_NetWare)
@@ -286,3 +281,7 @@ if (-f) {print "ok 57\n";} else {print "not ok 57\n";}
 if (-f()) {print "ok 58\n";} else {print "not ok 58\n";}
 
 unlink 'Op.stat.tmp' or print "# unlink failed: $!\n";
+
+# bug id 20011101.069
+my @r = \stat(".");
+if (@r == 13) { print "ok 59\n" } else { print "not ok 59\n" }