Massive cleanup of DateTime test dependencies, other interim
[dbsrgits/DBIx-Class.git] / t / 52cycle.t
CommitLineData
a917fb06 1use strict;
2use warnings;
3use Test::More;
4
5use lib qw(t/lib);
6
7BEGIN {
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
13use DBICTest;
14use DBICTest::Schema;
6298a324 15use Scalar::Util 'weaken';
16use namespace::clean;
a917fb06 17
18import Test::Memory::Cycle;
19
551e711a 20my $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
30 my $dbh = $weak->{dbh} = $s->storage->_get_dbh;
31 memory_cycle_ok($dbh, 'No cycles in DBI handle');
32
33 my $sqla = $weak->{sqla} = $s->storage->sql_maker;
34 memory_cycle_ok($sqla, 'No cycles in SQL maker');
35
551e711a 36 my $rs = $weak->{resultset} = $s->resultset ('Artist');
37 memory_cycle_ok($rs, 'No cycles in resultset');
38
39 my $rsrc = $weak->{resultsource} = $rs->result_source;
40 memory_cycle_ok($rsrc, 'No cycles in resultsource');
41
42 my $row = $weak->{row} = $rs->first;
43 memory_cycle_ok($row, 'No cycles in row');
44
6298a324 45 weaken $_ for values %$weak;
551e711a 46 memory_cycle_ok($weak, 'No cycles in weak object collection');
47}
48
49for (keys %$weak) {
50 ok (! $weak->{$_}, "No $_ leaks");
51}
52
53done_testing;