Retire useless abstraction (all rdbms need this anyway)
[dbsrgits/DBIx-Class.git] / t / 52cycle.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 use lib qw(t/lib);
6
7 BEGIN {
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";
11   };
12 }
13
14 use DBICTest;
15 use DBICTest::Schema;
16 use Scalar::Util ();
17
18 import Test::Memory::Cycle;
19
20 my $weak;
21
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
39 for (keys %$weak) {
40   ok (! $weak->{$_}, "No $_ leaks");
41 }
42
43 done_testing;