X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F52cycle.t;h=dc5f32635a1f8b4438e3ead75674c528a643503c;hb=ef5db92857777285b47ccebdcddca4a6ce9f6916;hp=8be1768deead7fc1ef3390d309dcd93cb5fa5624;hpb=e43797df95e6d413b8ae7ff015c43f9b69130723;p=dbsrgits%2FDBIx-Class.git diff --git a/t/52cycle.t b/t/52cycle.t index 8be1768..dc5f326 100644 --- a/t/52cycle.t +++ b/t/52cycle.t @@ -5,19 +5,38 @@ use Test::More; use lib qw(t/lib); BEGIN { - eval { require Test::Memory::Cycle; require Devel::Cycle }; - if ($@ or Devel::Cycle->VERSION < 1.10) { - plan skip_all => "leak test needs Test::Memory::Cycle and Devel::Cycle >= 1.10"; - } else { - plan tests => 1; - } + require DBIx::Class; + plan skip_all => 'Test needs: ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_cycle') + unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_cycle') ); } use DBICTest; use DBICTest::Schema; +use Scalar::Util (); import Test::Memory::Cycle; -my $s = DBICTest::Schema->clone; +my $weak; -memory_cycle_ok($s, 'No cycles in schema'); +{ + my $s = $weak->{schema} = DBICTest->init_schema; + memory_cycle_ok($s, 'No cycles in schema'); + + my $rs = $weak->{resultset} = $s->resultset ('Artist'); + memory_cycle_ok($rs, 'No cycles in resultset'); + + my $rsrc = $weak->{resultsource} = $rs->result_source; + memory_cycle_ok($rsrc, 'No cycles in resultsource'); + + my $row = $weak->{row} = $rs->first; + memory_cycle_ok($row, 'No cycles in row'); + + Scalar::Util::weaken ($_) for values %$weak; + memory_cycle_ok($weak, 'No cycles in weak object collection'); +} + +for (keys %$weak) { + ok (! $weak->{$_}, "No $_ leaks"); +} + +done_testing;