Author: dagolden
Date: Fri Dec  4 08:09:12 2009
New Revision: 13633

Modified:
   Module-Build/trunk/t/bundle_inc.t
   Module-Build/trunk/t/lib/MBTest.pm

Log:
skip bundle_inc.t if EU::Installed takes too long

Modified: Module-Build/trunk/t/bundle_inc.t
==============================================================================
--- Module-Build/trunk/t/bundle_inc.t   (original)
+++ Module-Build/trunk/t/bundle_inc.t   Fri Dec  4 08:09:12 2009
@@ -11,6 +11,10 @@
 use ExtUtils::Installed;
 use File::Path;
 
+sub _check_EUI {
+  stdout_stderr_of( sub { ExtUtils::Installed->new(extra_libs => [...@inc]) });
+}
+
 # Ensure any Module::Build modules are loaded from correct directory
 blib_load('Module::Build');
 blib_load('Module::Build::ConfigData');
@@ -18,8 +22,8 @@
 if ( $ENV{PERL_CORE} ) {
   plan skip_all => 'bundle_inc tests will never succeed in PERL_CORE';
 }
-elsif ( ! eval { ExtUtils::Installed->new(extra_libs => [...@inc]) } ) {
-  plan skip_all => 'ExtUtils::Installed had problems with your system';
+elsif ( timed_out( \&_check_EUI ) ) {
+  plan skip_all => 'ExtUtils::Installed takes too long on your system';
 }
 elsif ( Module::Build::ConfigData->feature('inc_bundling_support') ) {
   plan tests => 18;

Modified: Module-Build/trunk/t/lib/MBTest.pm
==============================================================================
--- Module-Build/trunk/t/lib/MBTest.pm  (original)
+++ Module-Build/trunk/t/lib/MBTest.pm  Fri Dec  4 08:09:12 2009
@@ -84,6 +84,7 @@
   check_compiler
   have_module
   blib_load
+  timed_out
 );
 push @EXPORT, @extra_exports;
 __PACKAGE__->export(scalar caller, @extra_exports);
@@ -238,5 +239,23 @@
   }
 }
 
+sub timed_out {
+  my ($sub, $timeout) = @_;
+  return unless $sub;
+  $timeout ||= 60;
+
+  my $saw_alarm = 0;
+  eval {
+    local $SIG{ALRM} = sub { $saw_alarm++; die "alarm\n"; }; # NB: \n required
+    alarm $timeout;
+    $sub->();
+    alarm 0;
+  };
+  if ($@) {
+    die unless $@ eq "alarm\n";   # propagate unexpected errors
+  }
+  return $saw_alarm;
+}
+
 1;
 # vim:ts=2:sw=2:et:sta

Reply via email to