X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBICTest%2FUtil%2FLeakTracer.pm;h=242a4e1cc00379a05da807efc8c23dc67cd9907d;hb=c9abd679a19b02556ed765f725c3fd7a68207257;hp=5b1c80db75b2bd1e9b6b573a9d36b1e3d2bcdd47;hpb=81b29c8d4a021dd3288ab68117198e5255f9d760;p=dbsrgits%2FDBIx-Class.git diff --git a/t/lib/DBICTest/Util/LeakTracer.pm b/t/lib/DBICTest/Util/LeakTracer.pm index 5b1c80d..242a4e1 100644 --- a/t/lib/DBICTest/Util/LeakTracer.pm +++ b/t/lib/DBICTest/Util/LeakTracer.pm @@ -8,7 +8,7 @@ use Scalar::Util qw(isweak weaken blessed reftype); use DBIx::Class::_Util qw(refcount hrefaddr refdesc); use DBIx::Class::Optional::Dependencies; use Data::Dumper::Concise; -use DBICTest::Util 'stacktrace'; +use DBICTest::Util qw( stacktrace visit_namespaces ); use constant { CV_TRACING => DBIx::Class::Optional::Dependencies->req_ok_for ('test_leaks_heavy'), }; @@ -148,30 +148,6 @@ sub visit_refs { $visited_cnt; } -sub visit_namespaces { - my $args = { (ref $_[0]) ? %{$_[0]} : @_ }; - - my $visited = 1; - - $args->{package} ||= '::'; - $args->{package} = '::' if $args->{package} eq 'main'; - - if ( $args->{action}->($args->{package}) ) { - - my $base = $args->{package}; - $base = '' if $base eq '::'; - - - $visited += visit_namespaces({ %$args, package => $_ }) for map - { $_ =~ /(.+?)::$/ ? "${base}::$1" : () } - grep - { $_ =~ /(? sub { 1 }, refs => [ map { my $sym = $_; - # *{"$pkg$sym"}{CODE} won't simply work - MRO-cached CVs are invisible there - ( CV_TRACING ? Class::MethodCache::get_cv("${pkg}$sym") : () ), + # *{"${pkg}::$sym"}{CODE} won't simply work - MRO-cached CVs are invisible there + ( CV_TRACING ? Class::MethodCache::get_cv("${pkg}::$sym") : () ), - ( defined *{"$pkg$sym"}{SCALAR} and length ref ${"$pkg$sym"} and ! isweak( ${"$pkg$sym"} ) ) - ? ${"$pkg$sym"} : () + ( defined *{"${pkg}::$sym"}{SCALAR} and length ref ${"${pkg}::$sym"} and ! isweak( ${"${pkg}::$sym"} ) ) + ? ${"${pkg}::$sym"} : () , ( map { - ( defined *{"$pkg$sym"}{$_} and ! isweak(defined *{"$pkg$sym"}{$_}) ) - ? *{"$pkg$sym"}{$_} + ( defined *{"${pkg}::$sym"}{$_} and ! isweak(defined *{"${pkg}::$sym"}{$_}) ) + ? *{"${pkg}::$sym"}{$_} : () } qw(HASH ARRAY IO GLOB) ), - } keys %$pkg ], - ) unless $pkg =~ /^ :: (?: + } keys %{"${pkg}::"} ], + ) unless $pkg =~ /^ (?: DB | next | B | .+? ::::ISA (?: ::CACHE ) | Class::C3 - ) :: $/x; + ) $/x; } );