Commit | Line | Data |
a917fb06 |
1 | use strict; |
2 | use warnings; |
226d1c35 |
3 | |
a917fb06 |
4 | use Test::More; |
5 | |
6 | use lib qw(t/lib); |
7 | |
8 | BEGIN { |
226d1c35 |
9 | require DBIx::Class::Optional::Dependencies; |
10 | plan skip_all => 'Test needs: ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_leaks') |
11 | unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_leaks') ); |
a917fb06 |
12 | } |
13 | |
14 | use DBICTest; |
15 | use DBICTest::Schema; |
6298a324 |
16 | use Scalar::Util 'weaken'; |
17 | use namespace::clean; |
a917fb06 |
18 | |
19 | import Test::Memory::Cycle; |
20 | |
551e711a |
21 | my $weak; |
a917fb06 |
22 | |
551e711a |
23 | { |
24 | my $s = $weak->{schema} = DBICTest->init_schema; |
dc35bbe6 |
25 | ok ($s->storage->connected, 'we are connected'); |
551e711a |
26 | memory_cycle_ok($s, 'No cycles in schema'); |
27 | |
dc35bbe6 |
28 | my $storage = $weak->{storage} = $s->storage; |
29 | memory_cycle_ok($storage, 'No cycles in storage'); |
30 | |
551e711a |
31 | my $rs = $weak->{resultset} = $s->resultset ('Artist'); |
32 | memory_cycle_ok($rs, 'No cycles in resultset'); |
33 | |
34 | my $rsrc = $weak->{resultsource} = $rs->result_source; |
35 | memory_cycle_ok($rsrc, 'No cycles in resultsource'); |
36 | |
37 | my $row = $weak->{row} = $rs->first; |
38 | memory_cycle_ok($row, 'No cycles in row'); |
39 | |
574d9b69 |
40 | my $sqla = $weak->{sqla} = $s->storage->sql_maker; |
41 | memory_cycle_ok($sqla, 'No cycles in SQL maker'); |
42 | |
43 | my $dbh = $weak->{dbh} = $s->storage->_get_dbh; |
44 | memory_cycle_ok($dbh, 'No cycles in DBI handle'); |
45 | |
46 | for (@{$dbh->{ChildHandles}}) { |
47 | $weak->{"$_"} = $_ if $_; |
48 | } |
49 | |
6298a324 |
50 | weaken $_ for values %$weak; |
551e711a |
51 | memory_cycle_ok($weak, 'No cycles in weak object collection'); |
52 | } |
53 | |
54 | for (keys %$weak) { |
55 | ok (! $weak->{$_}, "No $_ leaks"); |
56 | } |
57 | |
58 | done_testing; |