Improve error reporting when we encounter broken exception objects
[dbsrgits/DBIx-Class.git] / t / storage / txn_scope_guard.t
index ca67c98..4deffdd 100644 (file)
@@ -197,51 +197,24 @@ for my $post_poison (0,1) {
 
   require Text::Balanced;
 
-  my $great_success;
-  {
-    local $TODO = 'RT#74994 *STILL* not fixed';
-
-    lives_ok {
-      # this is what poisons $@
-      Text::Balanced::extract_bracketed( '(foo', '()' );
-
-      my $s = DBICTest->init_schema( deploy => 0 );
-      my $g = $s->txn_scope_guard;
-      $g->commit;
-      $great_success++;
-    } 'Text::Balanced is no longer screwing up $@';
-  }
-
-  # delete all of this when T::B dep is bumped
-  unless ($great_success) {
-
-# hacky workaround for desperate folk
-# intended to be copypasted into your app
-    {
-      require Text::Balanced;
-      require overload;
-
-      local $@;
-
-      # this is what poisons $@
-      Text::Balanced::extract_bracketed( '(foo', '()' );
+  my @w;
+  local $SIG{__WARN__} = sub {
+    $_[0] =~ /External exception object .+? \Qimplements partial (broken) overloading/
+      ? push @w, @_
+      : warn @_
+  };
 
-      if ($@ and overload::Overloaded($@) and ! overload::Method($@,'fallback') ) {
-        my $class = ref $@;
-        eval "package $class; overload->import(fallback => 1);"
-      }
-    }
-# end of hacky workaround
+  lives_ok {
+    # this is what poisons $@
+    Text::Balanced::extract_bracketed( '(foo', '()' );
 
-    lives_ok {
-      # this is what poisons $@
-      Text::Balanced::extract_bracketed( '(foo', '()' );
+    my $s = DBICTest::Schema->connect('dbi:SQLite::memory:');
+    my $g = $s->txn_scope_guard;
+    $g->commit;
+  } 'Broken Text::Balanced is not screwing up txn_guard';
 
-      my $s = DBICTest->init_schema( deploy => 0 );
-      my $g = $s->txn_scope_guard;
-      $g->commit;
-    } 'Monkeypatched Text::Balanced is no longer screwing up $@';
-  }
+  local $TODO = 'RT#74994 *STILL* not fixed';
+  is(scalar @w, 0, 'no warnings \o/');
 }
 
 done_testing;