X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBICTest.pm;h=8988db99f661c1cff801c04383a4ab205ef96341;hb=5e7249645ea75d5a9d25f1fdf8a42e0536b03f4e;hp=f95c8e789cd2c9586dcc3b3d9757ccce635c1367;hpb=fb88ca2c952ef2e17f6e8a414079f12f71761ff7;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/lib/DBICTest.pm b/t/lib/DBICTest.pm index f95c8e7..8988db9 100644 --- a/t/lib/DBICTest.pm +++ b/t/lib/DBICTest.pm @@ -3,6 +3,40 @@ package # hide from PAUSE use strict; use warnings; + +# this noop trick initializes the STDOUT, so that the TAP::Harness +# issued IO::Select->can_read calls (which are blocking wtf wtf wtf) +# keep spinning and scheduling jobs +# This results in an overall much smoother job-queue drainage, since +# the Harness blocks less +# (ideally this needs to be addressed in T::H, but a quick patchjob +# broke everything so tabling it for now) +BEGIN { + if ($INC{'Test/Builder.pm'}) { + local $| = 1; + print "#\n"; + } +} + +use Module::Runtime 'module_notional_filename'; +BEGIN { + for my $mod (qw( DBIC::SqlMakerTest SQL::Abstract )) { + if ( $INC{ module_notional_filename($mod) } ) { + # FIXME this does not seem to work in BEGIN - why?! + #require Carp; + #$Carp::Internal{ (__PACKAGE__) }++; + #Carp::croak( __PACKAGE__ . " must be loaded before $mod" ); + + my ($fr, @frame) = 1; + while (@frame = caller($fr++)) { + last if $frame[1] !~ m|^t/lib/DBICTest|; + } + + die __PACKAGE__ . " must be loaded before $mod (or modules using $mod) at $frame[1] line $frame[2]\n"; + } + } +} + use DBICTest::RunMode; use DBICTest::Schema; use DBICTest::Util::LeakTracer qw/populate_weakregistry assert_empty_weakregistry/; @@ -187,8 +221,14 @@ sub _database { # no fsync on commit $dbh->do ('PRAGMA synchronous = OFF'); - $dbh->do ('PRAGMA reverse_unordered_selects = ON') - if $ENV{DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER}; + if ($ENV{DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER}) { + + $storage->throw_exception( + 'PRAGMA reverse_unordered_selects does not work correctly before libsqlite 3.7.9' + ) if $storage->_server_info->{normalized_dbms_version} < 3.007009; + + $dbh->do ('PRAGMA reverse_unordered_selects = ON'); + } # set a *DBI* disconnect callback, to make sure the physical SQLite # file is still there (i.e. the test does not attempt to delete