[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