One extra cleanup pass before asserting weakregistry is empty
[dbsrgits/DBIx-Class.git] / t / lib / DBICTest / Util / LeakTracer.pm
index 718a0aa..58790e4 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 
 use Carp;
 use Scalar::Util qw(isweak weaken blessed reftype);
-use DBIx::Class::_Util 'refcount';
+use DBIx::Class::_Util qw(refcount hrefaddr);
 use DBIx::Class::Optional::Dependencies;
 use Data::Dumper::Concise;
 use DBICTest::Util 'stacktrace';
@@ -15,14 +15,12 @@ use constant {
 };
 
 use base 'Exporter';
-our @EXPORT_OK = qw(populate_weakregistry assert_empty_weakregistry hrefaddr visit_refs);
+our @EXPORT_OK = qw(populate_weakregistry assert_empty_weakregistry visit_refs);
 
 my $refs_traced = 0;
 my $leaks_found = 0;
 my %reg_of_regs;
 
-sub hrefaddr { sprintf '0x%x', &Scalar::Util::refaddr }
-
 # so we don't trigger stringification
 sub _describe_ref {
   sprintf '%s%s(%s)',
@@ -168,6 +166,9 @@ sub assert_empty_weakregistry {
 
   croak 'Expecting a registry hashref' unless ref $weak_registry eq 'HASH';
 
+  defined $weak_registry->{$_}{weakref} or delete $weak_registry->{$_}
+    for keys %$weak_registry;
+
   return unless keys %$weak_registry;
 
   my $tb = eval { Test::Builder->new }