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