Harmonize DBICTEST_VIA_REPLICATED detection in tests
Peter Rabbitson [Tue, 12 Apr 2016 10:09:03 +0000 (12:09 +0200)]
Back in 8b60b9211a I made a number of mistakes implementing the escape
checks: an envvar being set does not mean we are in fact running under
replication (e.g. the user requested explicitly use_file => 0 )

Fix that and also make sure we still run when use_file => 1 (and fix a
forgotten test failing this way)

t/52leaks.t
t/admin/03data.t
t/icdt/engine_specific/sqlite.t
t/lib/DBICTest.pm
t/storage/base.t
t/storage/dbh_do.t
t/storage/error.t

index 76fc8e6..fffc942 100644 (file)
@@ -59,6 +59,7 @@ my $has_dt;
 
 # Skip the heavy-duty leak tracing when just doing an install
 # or when having Moose crap all over everything
+# FIXME - remove when Replicated gets off Moose
 if ( !$ENV{DBICTEST_VIA_REPLICATED} and !DBICTest::RunMode->is_plain ) {
 
   # redefine the bless override so that we can catch each and every object created
index 460a89e..4be2960 100644 (file)
@@ -19,9 +19,13 @@ use DBIx::Class::Admin;
     sqlite_use_file => 1,
   );
 
+  my $storage = $schema->storage;
+  $storage = $storage->master
+    if $storage->isa('DBIx::Class::Storage::DBI::Replicated');
+
   my $admin = DBIx::Class::Admin->new(
     schema_class=> "DBICTest::Schema",
-    connect_info => $schema->storage->connect_info(),
+    connect_info => $storage->connect_info(),
     quiet  => 1,
     _confirm=>1,
   );
index 297372c..1bee9d6 100644 (file)
@@ -18,7 +18,7 @@ use DBICTest;
 
   my $storage = $schema->storage;
 
-  if ($ENV{DBICTEST_VIA_REPLICATED}) {
+  if( $storage->isa('DBIx::Class::Storage::DBI::Replicated') ) {
     $storage = $storage->master;
   }
   else {
index e4768a0..2e265b5 100644 (file)
@@ -349,8 +349,11 @@ sub init_schema {
     my $schema;
 
     if (
-      $ENV{DBICTEST_VIA_REPLICATED} &&=
-        ( !$args{storage_type} && !defined $args{sqlite_use_file} )
+      $ENV{DBICTEST_VIA_REPLICATED} &&= (
+        !$args{storage_type}
+          &&
+        ( ! defined $args{sqlite_use_file} or $args{sqlite_use_file} )
+      )
     ) {
       $args{storage_type} = ['::DBI::Replicated', { balancer_type => '::Random' }];
       $args{sqlite_use_file} = 1;
index 90cd8f7..df59e91 100644 (file)
@@ -18,7 +18,7 @@ is(
   ref($storage),
   'DBIx::Class::Storage::DBI::SQLite',
   'Storage reblessed correctly into DBIx::Class::Storage::DBI::SQLite'
-) unless $ENV{DBICTEST_VIA_REPLICATED};
+) unless $storage->isa('DBIx::Class::Storage::DBI::Replicated');
 
 throws_ok {
     $schema->storage->throw_exception('test_exception_42');
@@ -56,7 +56,6 @@ throws_ok {
   };
 }
 
-
 # testing various invocations of connect_info ([ ... ])
 
 my $coderef = sub { 42 };
index 1511f82..07453ea 100644 (file)
@@ -10,10 +10,8 @@ use DBICTest;
 
 my $schema = DBICTest->init_schema();
 my $storage = $schema->storage;
-
 $storage = $storage->master
-  if $ENV{DBICTEST_VIA_REPLICATED};
-
+  if $storage->isa('DBIx::Class::Storage::DBI::Replicated');
 
 # test (re)connection
 for my $disconnect (0, 1) {
index e8996fa..710ec22 100644 (file)
@@ -24,7 +24,8 @@ for my $conn_args (
     );
 
     my $storage = $s->storage;
-    $storage = $storage->master if $ENV{DBICTEST_VIA_REPLICATED};
+    $storage = $storage->master
+      if $storage->isa('DBIx::Class::Storage::DBI::Replicated');
 
     ok( ! $storage->connected, 'Starting unconnected' );
 
@@ -49,7 +50,8 @@ for my $conn_args (
   my $s = DBICTest->init_schema( no_deploy => 1, @$conn_args );
 
   my $storage = $s->storage;
-  $storage = $storage->master if $ENV{DBICTEST_VIA_REPLICATED};
+  $storage = $storage->master
+    if $storage->isa('DBIx::Class::Storage::DBI::Replicated');
 
   my $desc = "broken on_disconnect action @{[ explain $conn_args ]}";