t/io/fs.t - skip all tests that fail on VOS
[p5sagit/p5-mst-13.2.git] / t / io / fs.t
index 8e74a81..9f168cb 100755 (executable)
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -41,6 +41,9 @@ my $needs_fh_reopen =
 
 $needs_fh_reopen = 1 if (defined &Win32::IsWin95 && Win32::IsWin95());
 
+my $skip_mode_checks =
+    $^O eq 'cygwin' && $ENV{CYGWIN} !~ /ntsec/;
+
 plan tests => 36;
 
 
@@ -63,7 +66,7 @@ chdir './tmp';
 umask(022);
 
 SKIP: {
-    skip "bogus umask", 1 if ($^O eq 'MSWin32') || ($^O eq 'NetWare');
+    skip "bogus umask", 1 if ($^O eq 'MSWin32') || ($^O eq 'NetWare') ||  ($^O eq 'epoc'); 
 
     is((umask(0)&0777), 022, 'umask'),
 }
@@ -93,8 +96,13 @@ SKIP: {
 
     SKIP: {
         skip "hard links not that hard in $^O", 1 if $^O eq 'amigaos';
+       skip "no mode checks", 1 if $skip_mode_checks;
 
-        is($mode & 0777, 0666, "mode of triply-linked file");
+#      if ($^O eq 'cygwin') { # new files on cygwin get rwx instead of rw-
+#          is($mode & 0777, 0777, "mode of triply-linked file");
+#      } else {
+            is($mode & 0777, 0666, "mode of triply-linked file");
+#      }
     }
 }
 
@@ -108,7 +116,11 @@ SKIP: {
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('c');
 
-    is($mode & 0777, $newmode, "chmod going through");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through");
+    }
 
     $newmode = 0700;
     chmod 0444, 'x';
@@ -119,12 +131,20 @@ SKIP: {
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('c');
 
-    is($mode & 0777, $newmode, "chmod going through to c");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through to c");
+    }
 
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('x');
 
-    is($mode & 0777, $newmode, "chmod going through to x");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through to x");
+    }
 
     is(unlink('b','x'), 2, "unlink two files");
 
@@ -241,9 +261,10 @@ close(IOFSCOM);
 # as per UNIX FAQ.
 
 SKIP: {
+# Check truncating a closed file.
     eval { truncate "Iofs.tmp", 5; };
-
-    skip("no truncate - $@", 6) if $@;
+    
+    skip("no truncate - $@", 10) if $@;
 
     is(-s "Iofs.tmp", 5, "truncation to five bytes");
 
@@ -257,8 +278,8 @@ SKIP: {
     print FH "x\n" x 200;
     close FH;
 
-
-       open(FH, ">>Iofs.tmp") or die "Can't open Iofs.tmp for appending";
+# Check truncating an open file.
+    open(FH, ">>Iofs.tmp") or die "Can't open Iofs.tmp for appending";
 
     binmode FH;
     select FH;
@@ -275,6 +296,10 @@ SKIP: {
        close (FH); open (FH, ">>Iofs.tmp") or die "Can't reopen Iofs.tmp";
     }
        
+    if ($^O eq 'vos') {
+        skip ("# TODO - hit VOS bug posix-973 - cannot resize an open file below the current file pos.", 7);
+    }
+
     is(-s "Iofs.tmp", 200, "fh resize to 200 working (filename check)");
 
     ok(truncate(FH, 0), "fh resize to zero");
@@ -285,11 +310,12 @@ SKIP: {
 
     ok(-z "Iofs.tmp", "fh resize to zero working (filename check)");
 
-       ok(truncate(FH, 200), "fh resize to 200");
-       is(-s FH, 200, "fh resize to 200 working (FH check)");
+    ok(truncate(FH, 200), "fh resize to 200");
+    is(-s FH, 200, "fh resize to 200 working (FH check)");
+
+    ok(truncate(FH, 0), "fh resize to 0");
+    ok(-z FH, "fh resize to 0 working (FH check)");
 
-       ok(truncate(FH, 0), "fh resize to 0");
-       ok(-z FH, "fh resize to 0 working (FH check)");
     close FH;
 }