X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fstorage%2Fexception.t;h=9ce05b4da1eb0c169d9314665417a422fe9f4e86;hb=184005983ab22b5cf557191542d8d18c114176aa;hp=725a0ab2f5278aba76a4126393f00d5a2b9032a7;hpb=014fd55671aaf0e2060e31cc2e547661346f3106;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/storage/exception.t b/t/storage/exception.t index 725a0ab..9ce05b4 100644 --- a/t/storage/exception.t +++ b/t/storage/exception.t @@ -9,6 +9,8 @@ use lib qw(t/lib); use DBICTest; use DBICTest::Schema; +# make sure nothing eats the exceptions (an unchecked eval in Storage::DESTROY used to be a problem) + { package Dying::Storage; @@ -29,11 +31,7 @@ use DBICTest::Schema; } } -TODO: { -local $TODO = "I have no idea what is going on here... but it ain't right"; - for (qw/before_populate after_populate/) { - dies_ok (sub { my $schema = DBICTest::Schema->clone; $schema->storage_type ('Dying::Storage'); @@ -42,32 +40,4 @@ for (qw/before_populate after_populate/) { }, "$_ exception found"); } -} - done_testing; - -__END__ -For reference - next::method goes to ::Storage::DBI::_populate_dbh -which is: - -sub _populate_dbh { - my ($self) = @_; - - my @info = @{$self->_dbi_connect_info || []}; - $self->_dbh(undef); # in case ->connected failed we might get sent here - $self->_dbh($self->_connect(@info)); - - $self->_conn_pid($$); - $self->_conn_tid(threads->tid) if $INC{'threads.pm'}; - - $self->_determine_driver; - - # Always set the transaction depth on connect, since - # there is no transaction in progress by definition - $self->{transaction_depth} = $self->_dbh_autocommit ? 0 : 1; - - $self->_run_connection_actions unless $self->{_in_determine_driver}; -} - -After further tracing it seems that if I die() before $self->_conn_pid($$) -the exception is propagated. If I die after it - it's lost. What The Fuck?!