Fix test error failing after "undef\n=>" was fixed to stringify
[dbsrgits/DBIx-Class.git] / t / 52leaks.t
index 9a9a570..9f8c71a 100644 (file)
@@ -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};
   }
 }