Re: Smoke [5.9.0] 21474 FAIL(F) darwin 6.8 (darwin/1 cpu)
Slaven Rezic [Mon, 20 Oct 2003 22:39:28 +0000 (00:39 +0200)]
Message-Id: <87oewbiqyn.fsf@vran.herceg.de>

p4raw-id: //depot/perl@21663

lib/filetest.t

index 7ea9772..98a19bd 100644 (file)
@@ -5,6 +5,7 @@ BEGIN {
        @INC = '../lib';
 }
 
+use Config;
 use Test::More tests => 15;
 
 # these two should be kept in sync with the pragma itself
@@ -57,30 +58,38 @@ SKIP: {
     my $tstfile = "filetest.tst";
     skip("No $chflags available", 4) if !-x $chflags;
 
-    skip("Test does not work on OpenBSD, BSD/OS, and Darwin", 4)
-       if $^O =~ /^(?:openbsd|bsdos|darwin)$/;
-
-  SKIP: {
-       eval {
-           if (!-e $tstfile) {
-               open(T, ">$tstfile") or die "Can't create $tstfile: $!";
-               close T;
-           }
-           system($chflags, "uchg", $tstfile);
-           die "Can't exec $chflags uchg" if $? != 0;
-       };
-       skip("Errors in test using chflags: $@", 4) if $@;
-
-       {
-           use filetest 'access';
+    my $skip_eff_user_tests = (!$Config{d_setreuid} && !$Config{d_setresuid})
+                                                   ||
+                             (!$Config{d_setregid} && !$Config{d_setresgid});
+
+    eval {
+       if (!-e $tstfile) {
+           open(T, ">$tstfile") or die "Can't create $tstfile: $!";
+           close T;
+       }
+       system($chflags, "uchg", $tstfile);
+       die "Can't exec $chflags uchg" if $? != 0;
+    };
+    skip("Errors in test using chflags: $@", 4) if $@;
+
+    {
+       use filetest 'access';
+    SKIP: {
+           skip("No tests on effective user id", 1)
+               if $skip_eff_user_tests;
            is(-w $tstfile, undef, "$tstfile should not be recognized as writable");
-           is(-W $tstfile, undef, "$tstfile should not be recognized as writable");
        }
-       {
-           no filetest 'access';
+       is(-W $tstfile, undef, "$tstfile should not be recognized as writable");
+    }
+
+    {
+       no filetest 'access';
+    SKIP: {
+           skip("No tests on effective user id", 1)
+               if $skip_eff_user_tests;
            is(-w $tstfile, 1, "$tstfile should be recognized as writable");
-           is(-W $tstfile, 1, "$tstfile should be recognized as writable");
        }
+       is(-W $tstfile, 1, "$tstfile should be recognized as writable");
     }
 
     # cleanup