X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F81transactions.t;h=c1300de1a8e54e04eea06c73ac50d9b2d5982547;hb=36099e8c;hp=00c9418ddbe8b80840643e8431ae09482d46fcaf;hpb=83f262630f7430c3b20391b6af3a70e92107b8d5;p=dbsrgits%2FDBIx-Class.git diff --git a/t/81transactions.t b/t/81transactions.t index 00c9418..c1300de 100644 --- a/t/81transactions.t +++ b/t/81transactions.t @@ -333,7 +333,10 @@ $schema->storage->disconnect; { my $schema = DBICTest->init_schema(); - warnings_exist (sub { + # something is really confusing Test::Warn here, no time to debug +=begin + warnings_exist ( + sub { my $guard = $schema->txn_scope_guard; $schema->resultset ('Artist')->create ({ name => 'bohhoo'}); @@ -345,6 +348,30 @@ $schema->storage->disconnect; ], 'proper warnings generated on out-of-scope+rollback failure' ); +=cut + + my @want = ( + qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./, + qr/\*+ ROLLBACK FAILED\!\!\! \*+/, + ); + + my @w; + local $SIG{__WARN__} = sub { + if (grep {$_[0] =~ $_} (@want)) { + push @w, $_[0]; + } + else { + warn $_[0]; + } + }; + { + my $guard = $schema->txn_scope_guard; + $schema->resultset ('Artist')->create ({ name => 'bohhoo'}); + + $schema->storage->disconnect; # this should freak out the guard rollback + } + + is (@w, 2, 'Both expected warnings found'); } done_testing;