File Coverage

blib/lib/Module/Build.pm
Criterion Covered Total %
statement 44 46 95.6
branch 2 4 50.0
condition n/a
subroutine 15 15 100.0
pod 0 4 0.0
total 61 69 88.4


line stmt bran cond sub pod time code
1             package Module::Build;
2              
3             # This module doesn't do much of anything itself, it inherits from the
4             # modules that do the real work. The only real thing it has to do is
5             # figure out which OS-specific module to pull in. Many of the
6             # OS-specific modules don't do anything either - most of the work is
7             # done in Module::Build::Base.
8              
9 293     293   2226793 use 5.006;
  293         1178  
10 293     293   1600 use strict;
  293         610  
  293         6093  
11 293     293   1429 use warnings;
  293         491  
  293         7455  
12 293     293   1520 use File::Spec ();
  293         692  
  293         4424  
13 293     293   1341 use File::Path ();
  293         494  
  293         5022  
14 293     293   1495 use File::Basename ();
  293         576  
  293         4480  
15 293     293   134352 use Perl::OSType ();
  293         125212  
  293         7585  
16              
17 293     293   316459 use Module::Build::Base;
  293         1355  
  293         33105  
18              
19             our @ISA = qw(Module::Build::Base);
20             our $VERSION = '0.42_33';
21             $VERSION = eval $VERSION;
22              
23             # Inserts the given module into the @ISA hierarchy between
24             # Module::Build and its immediate parent
25             sub _interpose_module {
26 293     293   828 my ($self, $mod) = @_;
27 293     293   176309 eval "use $mod";
  293         885  
  293         5826  
  293         19530  
28 293 50       1439 die $@ if $@;
29              
30 293     293   2747 no strict 'refs';
  293         623  
  293         109318  
31 293         883 my $top_class = $mod;
32 293         550 while (@{"${top_class}::ISA"}) {
  293         1907  
33 293 50       681 last if ${"${top_class}::ISA"}[0] eq $ISA[0];
  293         2448  
34 0         0 $top_class = ${"${top_class}::ISA"}[0];
  0         0  
35             }
36              
37 293         671 @{"${top_class}::ISA"} = @ISA;
  293         5691  
38 293         5827 @ISA = ($mod);
39             }
40              
41             if (grep {-e File::Spec->catfile($_, qw(Module Build Platform), $^O) . '.pm'} @INC) {
42             __PACKAGE__->_interpose_module("Module::Build::Platform::$^O");
43              
44             } elsif ( my $ostype = os_type() ) {
45             __PACKAGE__->_interpose_module("Module::Build::Platform::$ostype");
46              
47             } else {
48             warn "Unknown OS type '$^O' - using default settings\n";
49             }
50              
51 293     293 0 2206 sub os_type { return Perl::OSType::os_type() }
52              
53 113     113 0 404 sub is_vmsish { return Perl::OSType::is_os_type('VMS') }
54 13     13 0 100 sub is_windowsish { return Perl::OSType::is_os_type('Windows') }
55 3     3 0 1524 sub is_unixish { return Perl::OSType::is_os_type('Unix') }
56              
57             1;
58              
59             __END__