Merge 'trunk' into 'handle_all_storage_methods_in_replicated'
[dbsrgits/DBIx-Class.git] / t / 52cycle.t
CommitLineData
a917fb06 1use strict;
2use warnings;
3use Test::More;
4
5use lib qw(t/lib);
6
7BEGIN {
e43797df 8 eval { require Test::Memory::Cycle; require Devel::Cycle };
9 if ($@ or Devel::Cycle->VERSION < 1.10) {
10 plan skip_all => "leak test needs Test::Memory::Cycle and Devel::Cycle >= 1.10";
551e711a 11 };
a917fb06 12}
13
14use DBICTest;
15use DBICTest::Schema;
551e711a 16use Scalar::Util ();
a917fb06 17
18import Test::Memory::Cycle;
19
551e711a 20my $weak;
a917fb06 21
551e711a 22{
23 my $s = $weak->{schema} = DBICTest->init_schema;
24 memory_cycle_ok($s, 'No cycles in schema');
25
26 my $rs = $weak->{resultset} = $s->resultset ('Artist');
27 memory_cycle_ok($rs, 'No cycles in resultset');
28
29 my $rsrc = $weak->{resultsource} = $rs->result_source;
30 memory_cycle_ok($rsrc, 'No cycles in resultsource');
31
32 my $row = $weak->{row} = $rs->first;
33 memory_cycle_ok($row, 'No cycles in row');
34
35 Scalar::Util::weaken ($_) for values %$weak;
36 memory_cycle_ok($weak, 'No cycles in weak object collection');
37}
38
39for (keys %$weak) {
40 ok (! $weak->{$_}, "No $_ leaks");
41}
42
43done_testing;