X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F52leaks.t;h=9f8c71a8c2f2464c180d8a07a7b67480d64576b6;hb=5083f7de8a46b7c2007ab92f018b21b3ffa39a1e;hp=9a9a5701cee0a3f5a2aa1774b662c2fd77962c34;hpb=0077982b2edc8273ab4b6ea59921177667008cb3;p=dbsrgits%2FDBIx-Class.git diff --git a/t/52leaks.t b/t/52leaks.t index 9a9a570..9f8c71a 100644 --- a/t/52leaks.t +++ b/t/52leaks.t @@ -302,7 +302,15 @@ my @compose_ns_classes; 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; @@ -371,16 +379,6 @@ for my $slot (keys %$weak_registry) { 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}; @@ -474,8 +472,11 @@ SKIP: { 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}}; @@ -519,6 +520,7 @@ END { 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}; } }