File Coverage

blib/lib/Test2/Require/Module.pm
Criterion Covered Total %
statement 30 31 96.7
branch 9 10 90.0
condition n/a
subroutine 7 7 100.0
pod 0 3 0.0
total 46 51 90.2


line stmt bran cond sub pod time code
1             package Test2::Require::Module;
2 2     2   450 use strict;
  2         4  
  2         58  
3 2     2   10 use warnings;
  2         3  
  2         52  
4              
5 2     2   9 use base 'Test2::Require';
  2         6  
  2         838  
6              
7             our $VERSION = '0.000153';
8              
9 2     2   16 use Test2::Util qw/pkg_to_file/;
  2         4  
  2         536  
10              
11             sub skip {
12 5     5 0 99 my $class = shift;
13 5         16 my ($module, $ver) = @_;
14              
15 5 100       13 return "Module '$module' is not installed"
16             unless check_installed($module);
17              
18 4 100       23 return undef unless defined $ver;
19              
20 2         7 return check_version($module, $ver);
21             }
22              
23             sub check_installed {
24 5     5 0 11 my ($mod) = @_;
25 5         17 my $file = pkg_to_file($mod);
26              
27 5 100       84 return 1 if eval { require $file; 1 };
  5         1587  
  4         98536  
28 1         7 my $error = $@;
29              
30 1 50       30 return 0 if $error =~ m/Can't locate \Q$file\E in \@INC/;
31              
32             # Some other error, rethrow it.
33 0         0 die $error;
34             }
35              
36             sub check_version {
37 2     2 0 7 my ($mod, $ver) = @_;
38              
39 2 100       4 return undef if eval { $mod->VERSION($ver); 1 };
  2         50  
  1         10  
40 1         9 my $have = $mod->VERSION;
41 1         13 return "Need '$mod' version $ver, have $have.";
42             }
43              
44             1;
45              
46             __END__