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; |
dc35bbe6 |
24 | ok ($s->storage->connected, 'we are connected'); |
551e711a |
25 | memory_cycle_ok($s, 'No cycles in schema'); |
26 | |
dc35bbe6 |
27 | my $storage = $weak->{storage} = $s->storage; |
28 | memory_cycle_ok($storage, 'No cycles in storage'); |
29 | |
551e711a |
30 | my $rs = $weak->{resultset} = $s->resultset ('Artist'); |
31 | memory_cycle_ok($rs, 'No cycles in resultset'); |
32 | |
33 | my $rsrc = $weak->{resultsource} = $rs->result_source; |
34 | memory_cycle_ok($rsrc, 'No cycles in resultsource'); |
35 | |
36 | my $row = $weak->{row} = $rs->first; |
37 | memory_cycle_ok($row, 'No cycles in row'); |
38 | |
574d9b69 |
39 | my $sqla = $weak->{sqla} = $s->storage->sql_maker; |
40 | memory_cycle_ok($sqla, 'No cycles in SQL maker'); |
41 | |
42 | my $dbh = $weak->{dbh} = $s->storage->_get_dbh; |
43 | memory_cycle_ok($dbh, 'No cycles in DBI handle'); |
44 | |
45 | for (@{$dbh->{ChildHandles}}) { |
46 | $weak->{"$_"} = $_ if $_; |
47 | } |
48 | |
6298a324 |
49 | weaken $_ for values %$weak; |
551e711a |
50 | memory_cycle_ok($weak, 'No cycles in weak object collection'); |
51 | } |
52 | |
53 | for (keys %$weak) { |
54 | ok (! $weak->{$_}, "No $_ leaks"); |
55 | } |
56 | |
57 | done_testing; |