});
$guard->commit;
- } qr/No such column made_up_column .*? at .*?$fn line \d+/s, "Error propogated okay";
+ } qr/No such column made_up_column .*? at .*?\Q$fn\E line \d+/s, "Error propogated okay";
ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
no strict 'refs';
no warnings 'redefine';
+
local *{DBIx::Class::Storage::DBI::txn_rollback} = sub { die 'die die my darling' };
+ Class::C3->reinitialize() if DBIx::Class::_ENV_::OLD_MRO;
throws_ok (sub {
my $guard = $schema->txn_scope_guard;
#$schema->storage->_dbh( $schema->storage->_dbh->clone );
die 'Deliberate exception';
- }, qr/Deliberate exception.+Rollback failed/s);
+ }, ($] >= 5.013008 )
+ ? qr/Deliberate exception/s # temporary until we get the generic exception wrapper rolling
+ : qr/Deliberate exception.+Rollback failed/s
+ );
# just to mask off warning since we could not disconnect above
$schema->storage->_dbh->disconnect;
}
# make sure it warns *big* on failed rollbacks
-{
+# test with and without a poisoned $@
+for my $poison (0,1) {
+
my $schema = DBICTest->init_schema();
no strict 'refs';
no warnings 'redefine';
local *{DBIx::Class::Storage::DBI::txn_rollback} = sub { die 'die die my darling' };
+ Class::C3->reinitialize() if DBIx::Class::_ENV_::OLD_MRO;
#The warn from within a DESTROY callback freaks out Test::Warn, do it old-school
=begin
}
};
{
+ eval { die 'GIFT!' if $poison };
my $guard = $schema->txn_scope_guard;
$schema->resultset ('Artist')->create ({ name => 'bohhoo'});
}
- is (@w, 2, 'Both expected warnings found');
+ is (@w, 2, 'Both expected warnings found' . ($poison ? ' (after $@ poisoning)' : '') );
# just to mask off warning since we could not disconnect above
$schema->storage->_dbh->disconnect;