Use tempdir() to create temporary directories for testing
Dagfinn Ilmari Mannsåker [Tue, 19 Aug 2014 17:33:48 +0000 (18:33 +0100)]
This is the first step towards being able to run tests i parallel.

t/65dbicdump_invocations.t
t/backcompat/0.04006/lib/dbixcsl_test_dir.pm
t/lib/dbixcsl_test_dir.pm

index 001492e..df667ed 100644 (file)
@@ -42,5 +42,3 @@ sub dbicdump {
     is $? >> 8, 0,
         'dbicdump executed successfully';
 }
-
-END { rmtree $tdir }
index 39d02b0..f40af8b 100644 (file)
@@ -3,22 +3,25 @@ package dbixcsl_test_dir;
 use strict;
 use warnings;
 use File::Path 'rmtree';
+use File::Temp 'tempdir';
 use Scalar::Util 'weaken';
 use namespace::clean;
 use DBI ();
 
-our $tdir = 't/var';
-
 use base qw/Exporter/;
 our @EXPORT_OK = '$tdir';
 
 die "/t does not exist, this can't be right...\n"
   unless -d 't';
 
-unless (-d $tdir) {
-  mkdir $tdir or die "Unable to create $tdir: $!\n";
+my $tbdir = 't/var';
+
+unless (-d $tbdir) {
+  mkdir $tbdir or die "Unable to create $tbdir: $!\n";
 }
 
+our $tdir = tempdir(DIR => $tbdir);
+
 # We need to disconnect all active DBI handles before deleting the directory,
 # otherwise the SQLite .db files cannot be deleted on Win32 (file in use) since
 # END does not run in any sort of order.
@@ -42,7 +45,8 @@ END {
             $dbh->disconnect if $dbh;
         }
 
-        rmtree($tdir, 1, 1)
+        rmtree($tdir, 1, 1);
+        rmdir($tbdir); # remove if empty, ignore otherwise
     }
 }
 
index 39d02b0..f40af8b 100644 (file)
@@ -3,22 +3,25 @@ package dbixcsl_test_dir;
 use strict;
 use warnings;
 use File::Path 'rmtree';
+use File::Temp 'tempdir';
 use Scalar::Util 'weaken';
 use namespace::clean;
 use DBI ();
 
-our $tdir = 't/var';
-
 use base qw/Exporter/;
 our @EXPORT_OK = '$tdir';
 
 die "/t does not exist, this can't be right...\n"
   unless -d 't';
 
-unless (-d $tdir) {
-  mkdir $tdir or die "Unable to create $tdir: $!\n";
+my $tbdir = 't/var';
+
+unless (-d $tbdir) {
+  mkdir $tbdir or die "Unable to create $tbdir: $!\n";
 }
 
+our $tdir = tempdir(DIR => $tbdir);
+
 # We need to disconnect all active DBI handles before deleting the directory,
 # otherwise the SQLite .db files cannot be deleted on Win32 (file in use) since
 # END does not run in any sort of order.
@@ -42,7 +45,8 @@ END {
             $dbh->disconnect if $dbh;
         }
 
-        rmtree($tdir, 1, 1)
+        rmtree($tdir, 1, 1);
+        rmdir($tbdir); # remove if empty, ignore otherwise
     }
 }