Work around TB1.5 hanging with 5.19 - use unreleased github patch
[dbsrgits/DBIx-Class.git] / t / lib / DBICTest.pm
index 589f82b..a185763 100644 (file)
@@ -3,6 +3,21 @@ 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 DBICTest::RunMode;
 use DBICTest::Schema;
 use DBICTest::Util::LeakTracer qw/populate_weakregistry assert_empty_weakregistry/;
@@ -187,6 +202,15 @@ sub _database {
         # no fsync on commit
         $dbh->do ('PRAGMA synchronous = OFF');
 
+        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
         # an open database, which fails on Win32)
@@ -328,6 +352,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 {
@@ -356,6 +383,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  /],