[Bast-commits] r3484 - in branches/DBIx-Class-current: lib/DBIx/Class/Storage t

blblack at dev.catalyst.perl.org blblack at dev.catalyst.perl.org
Sun Jun 10 16:09:33 GMT 2007


Author: blblack
Date: 2007-06-10 16:09:33 +0100 (Sun, 10 Jun 2007)
New Revision: 3484

Modified:
   branches/DBIx-Class-current/lib/DBIx/Class/Storage/DBI.pm
   branches/DBIx-Class-current/t/92storage.t
Log:
added back the r3131 tests in concise form, wrapped S::DBI::_execute in dbh_do to fix

Modified: branches/DBIx-Class-current/lib/DBIx/Class/Storage/DBI.pm
===================================================================
--- branches/DBIx-Class-current/lib/DBIx/Class/Storage/DBI.pm	2007-06-08 01:13:41 UTC (rev 3483)
+++ branches/DBIx-Class-current/lib/DBIx/Class/Storage/DBI.pm	2007-06-10 15:09:33 UTC (rev 3484)
@@ -840,8 +840,8 @@
   return ($sql, \@bind);
 }
 
-sub _execute {
-  my ($self, $op, $extra_bind, $ident, $bind_attributes, @args) = @_;
+sub _dbh_execute {
+  my ($self, $dbh, $op, $extra_bind, $ident, $bind_attributes, @args) = @_;
   
   if( blessed($ident) && $ident->isa("DBIx::Class::ResultSource") ) {
     $ident = $ident->from();
@@ -888,9 +888,15 @@
        map { defined ($_ && $_->[1]) ? qq{'$_->[1]'} : q{'NULL'} } @$bind; 
      $self->debugobj->query_end($sql, @debug_bind);
   }
+
   return (wantarray ? ($rv, $sth, @$bind) : $rv);
 }
 
+sub _execute {
+    my $self = shift;
+    $self->dbh_do($self->can('_dbh_execute'), @_)
+}
+
 sub insert {
   my ($self, $source, $to_insert) = @_;
   

Modified: branches/DBIx-Class-current/t/92storage.t
===================================================================
--- branches/DBIx-Class-current/t/92storage.t	2007-06-08 01:13:41 UTC (rev 3483)
+++ branches/DBIx-Class-current/t/92storage.t	2007-06-10 15:09:33 UTC (rev 3484)
@@ -5,11 +5,55 @@
 use lib qw(t/lib);
 use DBICTest;
 
-plan tests => 1;
+{
+    package DBICTest::ExplodingStorage::Sth;
+    use strict;
+    use warnings;
 
+    sub execute { die "Kablammo!" }
+
+    sub bind_param {}
+
+    package DBICTest::ExplodingStorage;
+    use strict;
+    use warnings;
+    use base 'DBIx::Class::Storage::DBI::SQLite';
+
+    my $count = 0;
+    sub sth {
+      my ($self, $sql) = @_;
+      return bless {},  "DBICTest::ExplodingStorage::Sth" unless $count++;
+      return $self->next::method($sql);
+    }
+
+    sub connected {
+      return 0 if $count == 1;
+      return shift->next::method(@_);
+    }
+}
+
+plan tests => 3;
+
 my $schema = DBICTest->init_schema();
 
 is( ref($schema->storage), 'DBIx::Class::Storage::DBI::SQLite',
     'Storage reblessed correctly into DBIx::Class::Storage::DBI::SQLite' );
 
+
+my $storage = $schema->storage;
+$storage->ensure_connected;
+
+bless $storage, "DBICTest::ExplodingStorage";
+$schema->storage($storage);
+
+eval { 
+    $schema->resultset('Artist')->create({ name => "Exploding Sheep" }) 
+};
+
+is($@, "", "Exploding \$sth->execute was caught");
+
+is(1, $schema->resultset('Artist')->search({name => "Exploding Sheep" })->count,
+  "And the STH was retired");
+
+
 1;




More information about the Bast-commits mailing list