X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBICTest%2FRunMode.pm;h=7611e4c82865c8e2281bef7175996d202cca0588;hb=9b871b00c;hp=b773c5d52c84247aa5a59f42c6c1480758aaf9d5;hpb=0c3c40a2c15a5c721f6b5f38246d0d350b565ce1;p=dbsrgits%2FDBIx-Class.git diff --git a/t/lib/DBICTest/RunMode.pm b/t/lib/DBICTest/RunMode.pm index b773c5d..7611e4c 100644 --- a/t/lib/DBICTest/RunMode.pm +++ b/t/lib/DBICTest/RunMode.pm @@ -16,9 +16,35 @@ BEGIN { } use Path::Class qw/file dir/; +use File::Spec; _check_author_makefile() unless $ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}; +# PathTools has a bug where on MSWin32 it will often return / as a tmpdir. +# This is *really* stupid and the result of having our lockfiles all over +# the place is also rather obnoxious. So we use our own heuristics instead +# https://rt.cpan.org/Ticket/Display.html?id=76663 +my $tmpdir; +sub tmpdir { + $tmpdir ||= do { + + my $dir = dir(File::Spec->tmpdir); + + my @parts = File::Spec->splitdir($dir); + if (@parts == 2 and $parts[1] eq '') { + # This means we were give the root dir (C:\ or something equally unacceptable) + # Replace with our local project tmpdir. This will make multiple runs + # from different runs conflict with each other, but is much better than + # polluting the root dir with random crap + $dir = _find_co_root()->subdir('t')->subdir('var'); + $dir->mkpath; + } + + $dir; + }; +} + + # Die if the author did not update his makefile # # This is pretty heavy handed, so the check is pretty solid: