SKIP: {
if ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_leaks') ) {
- Test::Memory::Cycle::memory_cycle_ok ($base_collection, 'No cycles in the object collection')
+ my @w;
+ local $SIG{__WARN__} = sub { $_[0] =~ /\QUnhandled type: REGEXP/ ? push @w, @_ : warn @_ };
+
+ Test::Memory::Cycle::memory_cycle_ok ($base_collection, 'No cycles in the object collection');
+
+ if ( $] > 5.011 ) {
+ local $TODO = 'Silence warning due to RT56681';
+ is (@w, 0, 'No Devel::Cycle emitted warnings');
+ }
}
else {
skip 'Circular ref test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_leaks'), 1;
delete $weak_registry->{$slot}
unless $cleared->{hash_merge_singleton}{$weak_registry->{$slot}{weakref}{behavior}}++;
}
- elsif (
- $slot =~ /^Data::Dumper/
- and
- $weak_registry->{$slot}{stacktrace} =~ /\QDBIx::Class::ResultSource::RowParser::_mk_row_parser/
- ) {
- # there should be only one D::D object (used to construct the rowparser)
- # more would indicate trouble
- delete $weak_registry->{$slot}
- unless $cleared->{mk_row_parser_dd_singleton}++;
- }
elsif ($slot =~ /^DateTime::TimeZone/) {
# DT is going through a refactor it seems - let it leak zones for now
delete $weak_registry->{$slot};
require IPC::Open2;
for my $type (keys %$persistence_tests) { SKIP: {
- skip "$type module not found", 1
- unless eval "require $type";
+ unless (eval "require $type") {
+ # Don't terminate what we didn't start
+ delete $persistence_tests->{$type}{termcmd};
+ skip "$type module not found", 1;
+ }
my @cmd = @{$persistence_tests->{$type}{cmd}};
unless ($ENV{DBICTEST_IN_PERSISTENT_ENV}) {
close $_ for (*STDIN, *STDOUT, *STDERR);
local $?; # otherwise test will inherit $? of the system()
- system (@{$persistence_tests->{PPerl}{termcmd}});
+ system (@{$persistence_tests->{PPerl}{termcmd}})
+ if $persistence_tests->{PPerl}{termcmd};
}
}