Commit | Line | Data |
a917fb06 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | |
5 | use lib qw(t/lib); |
6 | |
7 | BEGIN { |
a109c954 |
8 | require DBIx::Class; |
9 | plan skip_all => 'Test needs: ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_cycle') |
10 | unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_cycle') ); |
a917fb06 |
11 | } |
12 | |
13 | use DBICTest; |
14 | use DBICTest::Schema; |
6298a324 |
15 | use Scalar::Util 'weaken'; |
16 | use namespace::clean; |
a917fb06 |
17 | |
18 | import Test::Memory::Cycle; |
19 | |
551e711a |
20 | my $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 | |
6298a324 |
35 | weaken $_ for values %$weak; |
551e711a |
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; |