X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBICTest.pm;h=75599ebf3ae0950c8a26186b4b7e7b3fbc686873;hb=3d0733aac1d6b24f71d0836ff3418ea8cdeba97a;hp=ff8db7f101ebe32205a72f505d03c7d91d56e78c;hpb=9b871b00c2d332f53b68b2e98286aa8a116d2c19;p=dbsrgits%2FDBIx-Class.git diff --git a/t/lib/DBICTest.pm b/t/lib/DBICTest.pm index ff8db7f..75599eb 100644 --- a/t/lib/DBICTest.pm +++ b/t/lib/DBICTest.pm @@ -5,11 +5,12 @@ use strict; use warnings; use DBICTest::RunMode; use DBICTest::Schema; -use DBICTest::Util qw/populate_weakregistry assert_empty_weakregistry local_umask/; +use DBICTest::Util::LeakTracer qw/populate_weakregistry assert_empty_weakregistry/; +use DBICTest::Util 'local_umask'; use Carp; use Path::Class::File (); use File::Spec; -use Fcntl qw/:flock/; +use Fcntl qw/:DEFAULT :flock/; =head1 NAME @@ -60,12 +61,25 @@ our ($global_lock_fh, $global_exclusive_lock); sub import { my $self = shift; - my $lockpath = DBICTest::RunMode->tmpdir->file('.dbictest_global.lock'); + my $tmpdir = DBICTest::RunMode->tmpdir; + my $lockpath = $tmpdir->file('.dbictest_global.lock'); { my $u = local_umask(0); # so that the file opens as 666, and any user can lock - open ($global_lock_fh, '>', $lockpath) - or die "Unable to open $lockpath: $!"; + sysopen ($global_lock_fh, $lockpath, O_RDWR|O_CREAT) or do { + my $err = $!; + + my @x_tests = map { (defined $_) ? ( $_ ? 1 : 0 ) : 'U' } map {(-e, -d, -f, -r, -w, -x, -o)} ($tmpdir, $lockpath); + + die sprintf <<"EOE", $lockpath, $err, scalar $>, scalar $), (stat($tmpdir))[4,5,2], @x_tests; +Unable to open %s: %s +Process EUID/EGID: %s / %s +TmpDir UID/GID: %s / %s +TmpDir StatMode: %o +TmpDir X-tests: -e:%s -d:%s -f:%s -r:%s -w:%s -x:%s -o:%s +TmpFile X-tests: -e:%s -d:%s -f:%s -r:%s -w:%s -x:%s -o:%s +EOE + }; } for (@_) { @@ -189,7 +203,7 @@ sub _database { } sub __mk_disconnect_guard { - return if DBIx::Class::_ENV_::PEEPEENESS(); # leaks handles, delaying DESTROY, can't work right + return if DBIx::Class::_ENV_::PEEPEENESS; # leaks handles, delaying DESTROY, can't work right my $db_file = shift; return unless -f $db_file; @@ -314,6 +328,9 @@ sub deploy_schema { my $schema = shift; my $args = shift || {}; + local $schema->storage->{debug} + if ($ENV{TRAVIS}||'') eq 'true'; + if ($ENV{"DBICTEST_SQLT_DEPLOY"}) { $schema->deploy($args); } else { @@ -342,6 +359,9 @@ sub populate_schema { my $self = shift; my $schema = shift; + local $schema->storage->{debug} + if ($ENV{TRAVIS}||'') eq 'true'; + $schema->populate('Genre', [ [qw/genreid name/], [qw/1 emo /],