File-Glob/t/basic.t: avoid race condition
authorDavid Mitchell <davem@iabyn.com>
Sun, 6 Apr 2014 19:07:05 +0000 (20:07 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sun, 6 Apr 2014 19:07:05 +0000 (20:07 +0100)
Test 2 does a glob('*') in the t/ directory, and compares that with the
results of readdir('.'). If we're doing parallel testing, temporary files
and stuff may get created in t/, resulting in a race condition and
occasional random failures.

Fix this by chdir()ing to t/base/ first. The timestamp on this directory
on my system seems to indicate that nothing currently creates tmp files in
that dir, and given that these are basic tests, that's relatively unlikely
to change.

ext/File-Glob/t/basic.t

index 7871075..2e6a474 100644 (file)
@@ -32,6 +32,11 @@ if ($^O eq 'VMS') {
 
 
 # look for the contents of the current directory
+# try it in a directory that doesn't get modified during testing,
+# so parallel testing won't give us race conditions. t/base/ seems
+# fairly static
+
+chdir 'base' or die "chdir base: $!";
 $ENV{PATH} = "/bin";
 delete @ENV{qw(BASH_ENV CDPATH ENV IFS)};
 my @correct = ();
@@ -46,6 +51,7 @@ if (GLOB_ERROR) {
 } else {
     is_deeply(\@a, \@correct);
 }
+chdir '..' or die "chdir .. $!";
 
 # look up the user's home directory
 # should return a list with one item, and not set ERROR