X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fstorage%2Ftxn_scope_guard.t;h=8213a44ba48bfaf597068addcbb4ed3b05500e9d;hb=821edc0964a64b9d20b7d02c4a738b87e806f32d;hp=4a2c14b19a7e78dd3a7acb4a38f1c1086e907a4b;hpb=f2f65c95b32700b37efc1e0641402b31d09d7c13;p=dbsrgits%2FDBIx-Class.git diff --git a/t/storage/txn_scope_guard.t b/t/storage/txn_scope_guard.t index 4a2c14b..8213a44 100644 --- a/t/storage/txn_scope_guard.t +++ b/t/storage/txn_scope_guard.t @@ -199,7 +199,7 @@ for my $post_poison (0,1) { my @w; local $SIG{__WARN__} = sub { - $_[0] =~ /External exception object .+? \Qimplements partial (broken) overloading/ + $_[0] =~ /External exception class .+? \Qimplements partial (broken) overloading/ ? push @w, @_ : warn @_ }; @@ -217,4 +217,29 @@ for my $post_poison (0,1) { is(scalar @w, 0, 'no warnings \o/'); } +# ensure Devel::StackTrace-refcapture-like effects are countered +{ + my $s = DBICTest::Schema->connect('dbi:SQLite::memory:'); + my $g = $s->txn_scope_guard; + + my @arg_capture; + { + local $SIG{__WARN__} = sub { + package DB; + my $frnum; + while (my @f = CORE::caller(++$frnum) ) { + push @arg_capture, @DB::args; + } + }; + + undef $g; + 1; + } + + warnings_exist + { @arg_capture = () } + qr/\QPreventing *MULTIPLE* DESTROY() invocations on DBIx::Class::Storage::TxnScopeGuard/ + ; +} + done_testing;