File Coverage

blib/lib/ShipIt/Step/CheckVersionsMatch.pm
Criterion Covered Total %
statement 12 25 48.0
branch 0 8 0.0
condition 0 3 0.0
subroutine 4 6 66.6
pod 1 1 100.0
total 17 43 39.5


line stmt bran cond sub pod time code
1             package ShipIt::Step::CheckVersionsMatch;
2              
3 1     1   731 use strict;
  1         2  
  1         40  
4 1     1   5 use warnings;
  1         1  
  1         36  
5              
6 1     1   15 use base 'ShipIt::Step';
  1         2  
  1         811  
7              
8 1     1   1292 use File::Find::Rule;
  1         8696  
  1         9  
9              
10              
11             our $VERSION = '0.02';
12              
13             sub run {
14 0     0 1   my $self = shift;
15 0           my $state = shift;
16              
17 0           my $master_version = $state->version();
18              
19 0           for my $mod ( File::Find::Rule->name('*.pm')->in('lib') )
20             {
21 0           my $version = $self->_version_from_file($mod);
22 0 0 0       next unless defined $version && length $version;
23              
24 0 0         if ( $version ne $master_version )
25             {
26 0           die "The version in $mod ($version) does not match the master version ($master_version)\n";
27             }
28             }
29             }
30              
31             # Copied from ProjectType::Perl, which operates only on $self->{ver_from}
32             sub _version_from_file
33             {
34 0     0     my $self = shift;
35 0           my $file = shift;
36              
37 0 0         open my $fh, '<', $file
38             or die "Failed to open $file: $!\n";
39              
40 0           while (<$fh>) {
41 0 0         return $2 if /\$VERSION\s*=\s*([\'\"])(.+?)\1/;
42             }
43             }
44              
45              
46             1;
47              
48             __END__