New SQLite kicks ass - remove some warning silencers and reinstantiate tests
Peter Rabbitson [Tue, 21 Apr 2009 08:37:11 +0000 (08:37 +0000)]
Makefile.PL
lib/DBIx/Class/Storage/DBI/SQLite.pm
t/33storage_reconnect.t

index 6b51b1e..3b349a7 100644 (file)
@@ -9,6 +9,7 @@ name     'DBIx-Class';
 perl_version '5.006001';
 all_from 'lib/DBIx/Class.pm';
 
+requires 'DBD::SQLite'              => 1.23;
 requires 'Data::Page'               => 2.00;
 requires 'Scalar::Util'             => 0;
 requires 'SQL::Abstract'            => 1.51;
@@ -31,7 +32,7 @@ requires 'MRO::Compat'              => 0.09;
 requires 'Encode'                   => 0 if ($] <= 5.008000);  
 
 # configure_requires so the sanity check below can run
-configure_requires 'DBD::SQLite'    => 1.21;
+configure_requires 'DBD::SQLite';
 
 test_requires 'Test::Builder'       => 0.33;
 test_requires 'Test::Warn'          => 0.11;
index e29c2ee..a4aeff6 100644 (file)
@@ -45,21 +45,6 @@ sub backup
   return $backupfile;
 }
 
-sub disconnect {
-
-  # As described in this node http://www.perlmonks.org/?node_id=666210
-  # there seems to be no sane way to ->disconnect a SQLite database with
-  # cached statement handles. As per mst we just zap the cache and 
-  # proceed as normal.
-
-  my $self = shift;
-  if ($self->connected) {
-    $self->_dbh->{CachedKids} = {};
-    $self->next::method (@_);
-  }
-}
-
-
 1;
 
 =head1 NAME
index 5bd797e..8f1eba1 100644 (file)
@@ -7,17 +7,7 @@ use Test::More;
 use lib qw(t/lib);
 use DBICTest;
 
-# equivalent of $Module::Install::AUTHOR
-my $author = (
-  ( not  -d './inc' )
-    or
-  ( -e ($^O eq 'VMS' ? './inc/_author' : './inc/.author') )
-);
-
-plan $author
-  ? (tests => 6)
-  : (skip_all => 'Test temporarily disabled due to a widespread buggy SQLite version')
-;
+plan tests => 6;
 
 my $db_orig = "$FindBin::Bin/var/DBIxClass.db";
 my $db_tmp  = "$db_orig.tmp";
@@ -31,12 +21,11 @@ cmp_ok(@art, '==', 3, "Three artists returned");
 
 # Disconnect the dbh, and be sneaky about it
 # Also test if DBD::SQLite finaly knows how to ->disconnect properly
-TODO: {
-    local $TODO = 'SQLite is evil/braindead. Once this test starts passing, remove the related atrocity from DBIx::Class::Storage::DBI::SQLite';
-    my $w;
-    local $SIG{__WARN__} = sub { $w = shift };
-    $schema->storage->_dbh->disconnect;
-    ok ($w !~ /active statement handles/, 'SQLite can disconnect properly \o/');
+{
+  my $w;
+  local $SIG{__WARN__} = sub { $w = shift };
+  $schema->storage->_dbh->disconnect;
+  ok ($w !~ /active statement handles/, 'SQLite can disconnect properly');
 }
 
 # Try the operation again - What should happen here is: