GAH! DBD::SQLite's sqlite_db_filename() is relatively new, undo 9e75be92
Peter Rabbitson [Wed, 22 Jan 2014 16:24:03 +0000 (17:24 +0100)]
On the bright side, re-trapping $db_file now *SEEMS TO WORK*. What the hell?
Ripping out the dogE-crap of 9e75be92, and trying to forget all of this ever
happened...

t/52leaks.t
t/lib/DBICTest.pm
t/storage/replicated.t

index 1ca1e21..aefe40c 100644 (file)
@@ -360,13 +360,6 @@ unless (DBICTest::RunMode->is_plain) {
         ## anything we have seen so far is cool
         #delete @{$interim_wr}{keys %$weak_registry};
         #
-        ## I still don't get any of this...
-        #delete $interim_wr->{$_} for grep {
-        #  ref ($interim_wr->{$_}{weakref}) eq 'SCALAR'
-        #    and
-        #  ${$interim_wr->{$_}{weakref}} eq 'very closure... much wtf... wow!!!'
-        #} keys %$interim_wr;
-        #
         ## moment of truth - the rest ought to be gone
         #assert_empty_weakregistry($interim_wr);
       }
index 86acbfd..c0dde46 100644 (file)
@@ -210,23 +210,12 @@ sub _database {
       );
     }
 
-    # MASSIVE FIXME - this seems necessary, but I do not yet know why
-    # without an external variable on the pad the on_connect_do cref
-    # (starting just below) is being considered a const of some sorts
-    # and persists indefinitely... wtf --ribasushi
-    my $such_var = 'very closure... much wtf... wow!!!';
-
     return ("dbi:SQLite:${db_file}", '', '', {
       AutoCommit => 1,
 
       # this is executed on every connect, and thus installs a disconnect/DESTROY
       # guard for every new $dbh
       on_connect_do => sub {
-        # MASSIVE FIXME - this seems necessary, but I do not yet know why
-        # without an external variable on the pad the on_connect_do cref
-        # (starting just above) is being considered a const of some sorts
-        # and persists indefinitely... wtf --ribasushi
-        $such_var if 0;
 
         my $storage = shift;
         my $dbh = $storage->_get_dbh;
@@ -246,7 +235,7 @@ sub _database {
         # 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)
-        if (my $guard_cb = __mk_disconnect_guard($dbh->sqlite_db_filename)) {
+        if (my $guard_cb = __mk_disconnect_guard($db_file)) {
           $dbh->{Callbacks} = {
             connect => sub { $guard_cb->('connect') },
             disconnect => sub { $guard_cb->('disconnect') },
index c480541..509b3e6 100644 (file)
@@ -208,6 +208,7 @@ TESTSCHEMACLASSES: {
 
     sub cleanup {
         my $self = shift @_;
+        $_->disconnect for values %{ $self->schema->storage->replicants };
         foreach my $slave (@{$self->slave_paths}) {
             if(-e $slave) {
                 unlink $slave;
@@ -914,7 +915,6 @@ is $debug{storage_type}, 'REPLICANT', "got last query from a replicant: $debug{d
 }
 
 ## Delete the old database files
-$_->disconnect for values %{ $replicated->schema->storage->replicants };
 $replicated->cleanup;
 
 done_testing;