Rewrite writiability test to be clearer and with less warnings
Peter Rabbitson [Sat, 25 Jan 2014 05:06:47 +0000 (06:06 +0100)]
t/lib/DBICTest/RunMode.pm

index 348c8ea..604e71f 100644 (file)
@@ -43,23 +43,23 @@ sub tmpdir {
     else {
       # make sure we can actually create and sysopen a file in this dir
       local $@;
-      my $tfh;
+      my $tempfile = '<NONCREATABLE>';
       eval {
-        $tfh = File::Temp->new(
-          TEMPLATE => '_dbictest_writability_XXXXXX',
+        $tempfile = File::Temp->new(
+          TEMPLATE => '_dbictest_writability_test_XXXXXX',
           DIR => "$dir",
           UNLINK => 1,
         );
-        my $fn = "$tfh";
-        close $tfh or die "closing $fn failed: $!\n";
-        sysopen (my $tfh2, $fn, O_RDWR) or die "reopening $fn failed: $!\n";
-        print $tfh2 'deadbeef' x 1024 or die "printing to $fn failed: $!\n";
-        close $tfh2 or die "closing $fn failed: $!\n";
+        close $tempfile or die "closing $tempfile failed: $!\n";
+
+        sysopen (my $tempfh2, "$tempfile", O_RDWR) or die "reopening $tempfile failed: $!\n";
+        print $tempfh2 'deadbeef' x 1024 or die "printing to $tempfile failed: $!\n";
+        close $tempfh2 or die "closing $tempfile failed: $!\n";
         1;
       } or do {
         chomp( my $err = $@ );
-        my @x_tests = map { (defined $_) ? ( $_ ? 1 : 0 ) : 'U' } map {(-e, -d, -f, -r, -w, -x, -o)} ("$dir", "$tfh");
-        $reason_dir_unusable = sprintf <<"EOE", "$tfh"||'', $err, scalar $>, scalar $), (stat($dir))[4,5,2], @x_tests;
+        my @x_tests = map { (defined $_) ? ( $_ ? 1 : 0 ) : 'U' } map {(-e, -d, -f, -r, -w, -x, -o)} ("$dir", "$tempfile");
+        $reason_dir_unusable = sprintf <<"EOE", "$tempfile"||'', $err, scalar $>, scalar $), (stat($dir))[4,5,2], @x_tests;
 File::Spec->tmpdir returned a directory which appears to be non-writeable:
 Error encountered while testing '%s': %s
 Process EUID/EGID: %s / %s