Change once more the signature of the custom cond coderef (augment a446d7f8)
[dbsrgits/DBIx-Class-Historic.git] / t / lib / DBICTest / Util.pm
index 847fba8..0588a9d 100644 (file)
@@ -3,6 +3,39 @@ package DBICTest::Util;
 use warnings;
 use strict;
 
+# this noop trick initializes the STDOUT, so that the TAP::Harness
+# issued IO::Select->can_read calls (which are blocking wtf wtf wtf)
+# keep spinning and scheduling jobs
+# This results in an overall much smoother job-queue drainage, since
+# the Harness blocks less
+# (ideally this needs to be addressed in T::H, but a quick patchjob
+# broke everything so tabling it for now)
+BEGIN {
+  if ($INC{'Test/Builder.pm'}) {
+    local $| = 1;
+    print "#\n";
+  }
+}
+
+use Module::Runtime 'module_notional_filename';
+BEGIN {
+  for my $mod (qw( SQL::Abstract::Test SQL::Abstract )) {
+    if ( $INC{ module_notional_filename($mod) } ) {
+      # FIXME this does not seem to work in BEGIN - why?!
+      #require Carp;
+      #$Carp::Internal{ (__PACKAGE__) }++;
+      #Carp::croak( __PACKAGE__ . " must be loaded before $mod" );
+
+      my ($fr, @frame) = 1;
+      while (@frame = caller($fr++)) {
+        last if $frame[1] !~ m|^t/lib/DBICTest|;
+      }
+
+      die __PACKAGE__ . " must be loaded before $mod (or modules using $mod) at $frame[1] line $frame[2]\n";
+    }
+  }
+}
+
 use Config;
 use Carp 'confess';
 use Scalar::Util qw(blessed refaddr);
@@ -68,22 +101,22 @@ sub check_customcond_args ($) {
 
   my $rowobj_cnt = 0;
 
-  if (defined $args->{self_resultobj} or defined $args->{self_rowobj} ) {
+  if (defined $args->{self_result_object} or defined $args->{self_rowobj} ) {
     $rowobj_cnt++;
-    for (qw(self_resultobj self_rowobj)) {
+    for (qw(self_result_object self_rowobj)) {
       confess "Custom condition argument '$_' must be a result instance"
         unless defined blessed $args->{$_} and $args->{$_}->isa('DBIx::Class::Row');
     }
 
-    confess "Current and legacy self_resultobj arguments do not match"
-      if refaddr($args->{self_resultobj}) != refaddr($args->{self_rowobj});
+    confess "Current and legacy self_result_object arguments do not match"
+      if refaddr($args->{self_result_object}) != refaddr($args->{self_rowobj});
   }
 
-  if (defined $args->{foreign_resultobj}) {
+  if (defined $args->{foreign_result_object}) {
     $rowobj_cnt++;
 
-    confess "Custom condition argument 'foreign_resultobj' must be a result instance"
-      unless defined blessed $args->{foreign_resultobj} and $args->{foreign_resultobj}->isa('DBIx::Class::Row');
+    confess "Custom condition argument 'foreign_result_object' must be a result instance"
+      unless defined blessed $args->{foreign_result_object} and $args->{foreign_result_object}->isa('DBIx::Class::Row');
   }
 
   confess "Result objects supplied on both ends of a relationship"