Force xt/ tests to run on anything involving a create_distdir
[dbsrgits/DBIx-Class.git] / t / 52leaks.t
index e2ed738..da99c8b 100644 (file)
@@ -47,7 +47,8 @@ if ($ENV{DBICTEST_IN_PERSISTENT_ENV}) {
 
 use lib qw(t/lib);
 use DBICTest::RunMode;
-use DBICTest::Util qw/populate_weakregistry assert_empty_weakregistry/;
+use DBICTest::Util::LeakTracer qw/populate_weakregistry assert_empty_weakregistry/;
+use Scalar::Util 'refaddr';
 use DBIx::Class;
 use B 'svref_2object';
 BEGIN {
@@ -111,6 +112,7 @@ unless (DBICTest::RunMode->is_plain) {
   require DBI;
   require DBD::SQLite;
   require FileHandle;
+  require Moo;
 
   %$weak_registry = ();
 }
@@ -256,9 +258,12 @@ my @compose_ns_classes;
 
     leaky_resultset => $rs_bind_circref,
     leaky_resultset_cond => $cond_rowobj,
-    leaky_resultset_member => $rs_bind_circref->next,
   };
 
+  # this needs to fire, even if it can't find anything
+  # see FIXME below
+  $rs_bind_circref->next;
+
   require Storable;
   %$base_collection = (
     %$base_collection,
@@ -362,16 +367,6 @@ for my $slot (keys %$weak_registry) {
     delete $weak_registry->{$slot}
       unless $cleared->{hash_merge_singleton}{$weak_registry->{$slot}{weakref}{behavior}}++;
   }
-  elsif (
-    $slot =~ /^Data::Dumper/
-      and
-    $weak_registry->{$slot}{stacktrace} =~ /\QDBIx::Class::ResultSource::_mk_row_parser/
-  ) {
-    # there should be only one D::D object (used to construct the rowparser)
-    # more would indicate trouble
-    delete $weak_registry->{$slot}
-      unless $cleared->{mk_row_parser_dd_singleton}++;
-  }
   elsif (DBIx::Class::_ENV_::INVISIBLE_DOLLAR_AT and $slot =~ /^__TxnScopeGuard__FIXUP__/) {
     delete $weak_registry->{$slot}
   }