This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op/.stat.t: fix race condition
authorDavid Mitchell <davem@iabyn.com>
Tue, 12 Aug 2014 10:44:35 +0000 (11:44 +0100)
committerDavid Mitchell <davem@iabyn.com>
Tue, 12 Aug 2014 10:44:35 +0000 (11:44 +0100)
A test was checking that stat on FILEHANDLE and lstat on *FILEHANDLE{IO}
gave the same results. It was using STDOUT as the filehandle, but since
this can be modified by other processes during parallel testing, a race
condition is possible.

Open a file instead to get reliability.

t/op/stat.t

index 2f34f6e..027902d 100644 (file)
@@ -472,10 +472,12 @@ like $@, qr/^The stat preceding lstat\(\) wasn't an lstat at /,
 'stat $ioref resets stat type';
 
 {
-    my @statbuf = stat STDOUT;
+    open(FOO, ">$tmpfile") || DIE("Can't open temp test file: $!");
+    my @statbuf = stat FOO;
     stat "test.pl";
-    my @lstatbuf = lstat *STDOUT{IO};
+    my @lstatbuf = lstat *FOO{IO};
     is "@lstatbuf", "@statbuf", 'lstat $ioref reverts to regular fstat';
+    unlink $tmpfile or print "# unlink failed: $!\n";
 }
   
 SKIP: {