Escape more frames when determining carp/throw_exception originator
Peter Rabbitson [Mon, 8 Apr 2013 09:21:27 +0000 (11:21 +0200)]
Augments 5e0e5426b

lib/DBIx/Class/Carp.pm
t/106dbic_carp.t

index 24ddd13..e0a1e92 100644 (file)
@@ -42,7 +42,12 @@ sub __find_caller {
         and
       ! $Carp::Internal{$1}
         and
-      $2 !~ /^(?: throw_exception | carp | carp_unique | carp_once )$/x
+#############################
+# Need a way to parameterize this for Carp::Skip
+      $1 !~ /^(?: DBIx::Class::Storage::BlockRunner | Context::Preserve | Try::Tiny | Class::Accessor::Grouped | Class::C3::Componentised | Module::Runtime )$/x
+        and
+      $2 !~ /^(?: throw_exception | carp | carp_unique | carp_once | dbh_do | txn_do | with_deferred_fk_checks)$/x
+#############################
     ) ? $f[3] : undef;
 
     if (
index 241fc5d..e6710d8 100644 (file)
@@ -38,7 +38,9 @@ use DBICTest;
 
     sub thrower {
       sub {
-        DBICTest->init_schema(no_deploy => 1)->throw_exception('time to die');
+        DBICTest->init_schema(no_deploy => 1)->storage->dbh_do(sub {
+          shift->throw_exception('time to die');
+        })
       }->();
     }