use Fcntl qw/:DEFAULT :seek :flock/;
use Time::HiRes 'sleep';
-use Path::Class::File;
-use File::Spec;
+use DBICTest::RunMode;
use DBICTest::Util qw/populate_weakregistry assert_empty_weakregistry local_umask/;
use namespace::clean;
# Also if there is no connection - there is no lock to be had
if ($locktype and (!$locker or $locker->{type} ne $locktype)) {
- warn "$$ $0 $locktype" if $locktype eq 'generic' or $locktype eq 'SQLite';
+ warn "$$ $0 $locktype" if (
+ ($locktype eq 'generic' or $locktype eq 'SQLite')
+ and
+ DBICTest::RunMode->is_author
+ );
- my $lockpath = File::Spec->tmpdir . "/.dbictest_$locktype.lock";
+ my $lockpath = DBICTest::RunMode->tmpdir->file(".dbictest_$locktype.lock");
my $lock_fh;
{
# see if anyone was holding a lock before us, and wait up to 5 seconds for them to terminate
# if we do not do this we may end up trampling over some long-running END or somesuch
seek ($lock_fh, 0, SEEK_SET) or die "seek failed $!";
- if (read ($lock_fh, my $old_pid, 100) ) {
+ my $old_pid;
+ if (
+ read ($lock_fh, $old_pid, 100)
+ and
+ ($old_pid) = $old_pid =~ /^(\d+)$/
+ ) {
for (1..50) {
kill (0, $old_pid) or last;
sleep 0.1;