Minor cleanup of memory cycle tracing and IC::DT inflator selector logic
[dbsrgits/DBIx-Class-Historic.git] / t / 52leaks.t
CommitLineData
a917fb06 1use strict;
2use warnings;
226d1c35 3
a917fb06 4use Test::More;
5
6use lib qw(t/lib);
7
8BEGIN {
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
14use DBICTest;
15use DBICTest::Schema;
6298a324 16use Scalar::Util 'weaken';
17use namespace::clean;
a917fb06 18
19import Test::Memory::Cycle;
20
551e711a 21my $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
54for (keys %$weak) {
55 ok (! $weak->{$_}, "No $_ leaks");
56}
57
58done_testing;