This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
lib/File/stat.t shouldn't test -A $^X
authorNicholas Clark <nick@ccl4.org>
Tue, 19 Jun 2012 10:33:50 +0000 (12:33 +0200)
committerNicholas Clark <nick@ccl4.org>
Thu, 21 Jun 2012 07:00:37 +0000 (09:00 +0200)
Testing this fails intermittently on darwin, which has POSIXly-correct atime
semantics. When tests run in parallel, the atime of $^X will update whenever
another perl process starts, which is a race condition with this test.

lib/File/stat.t

index 641cfad..5100271 100644 (file)
@@ -52,12 +52,16 @@ my (undef, $file) = tempfile();
 }
 
 sub test_X_ops {
-    my ($file, $desc_tail) = @_;
+    my ($file, $desc_tail, $skip) = @_;
     my @stat = CORE::stat $file;
     my $stat = File::stat::stat($file);
     isa_ok($stat, 'File::stat', 'should build a stat object');
 
     for my $op (split //, "rwxoRWXOezsfdlpSbcugkMCA") {
+        if ($skip && $op =~ $skip) {
+            note("Not testing -A $desc_tail");
+            next;
+        }
         for my $access ('', 'use filetest "access";') {
             my ($warnings, $awarn, $vwarn, $rv);
             my $desc = $access
@@ -121,7 +125,8 @@ SKIP: {
     -e $^X && -x $^X or skip "$^X is not present and executable", 4;
     $^O eq "VMS" and skip "File::stat ignores VMS ACLs", 4;
 
-    test_X_ops($^X, "for $^X");
+    # Other tests running in parallel mean that $^X is read, updating its atime
+    test_X_ops($^X, "for $^X", qr/A/);
 }