From: Peter Rabbitson Date: Sun, 10 Oct 2010 18:36:47 +0000 (+0200) Subject: Add Hash::Merge exception to the leak test X-Git-Tag: v0.08124~32 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=commitdiff_plain;h=307ab4c58566698710b71eebbfb612686d9133be Add Hash::Merge exception to the leak test This is so that a user with a DBIC_TRACE_PROFILE in the env will still be able to pass the tests/install --- diff --git a/t/52leaks.t b/t/52leaks.t index f044db5..f779f3c 100644 --- a/t/52leaks.t +++ b/t/52leaks.t @@ -39,6 +39,7 @@ unless (DBICTest::RunMode->is_plain) { require Errno; require Class::Struct; require FileHandle; + require Hash::Merge; no warnings qw/redefine once/; no strict qw/refs/; @@ -121,6 +122,7 @@ unless (DBICTest::RunMode->is_plain) { storage => $storage, resultset => $rs, + row_object => $row_obj, result_source => $rs->result_source, @@ -146,6 +148,21 @@ unless (DBICTest::RunMode->is_plain) { memory_cycle_ok($weak_registry, 'No cycles in the weakened object collection') if $have_test_cycle; +# Naturally we have some exceptions +my $cleared; +for my $slot (keys %$weak_registry) { + if ($slot =~ /^SQL\:\:Translator/) { + # SQLT is a piece of shit, leaks all over + delete $weak_registry->{$slot}; + } + elsif ($slot =~ /^Hash\:\:Merge/) { + # only clear one object - more would indicate trouble + delete $weak_registry->{$slot} + unless $cleared->{hash_merge_singleton}{$weak_registry->{$slot}{weakref}{behavior}}++; + } +} + + # FIXME # For reasons I can not yet fully understand the table() god-method (located in # ::ResultSourceProxy::Table) attaches an actual source instance to each class @@ -164,8 +181,6 @@ DBICTest::Schema->source_registrations(undef); my $tb = Test::More->builder; for my $slot (keys %$weak_registry) { - # SQLT is a piece of shit, leaks all over - next if $slot =~ /^SQL\:\:Translator/; ok (! defined $weak_registry->{$slot}{weakref}, "No leaks of $slot") or do { my $diag = '';