File Coverage

blib/lib/Alien/Base/ModuleBuild/File.pm
Criterion Covered Total %
statement 27 45 60.0
branch 5 18 27.7
condition 1 3 33.3
subroutine 10 10 100.0
pod 0 7 0.0
total 43 83 51.8


line stmt bran cond sub pod time code
1             package Alien::Base::ModuleBuild::File;
2              
3 7     7   463686 use strict;
  7         26  
  7         199  
4 7     7   35 use warnings;
  7         14  
  7         154  
5 7     7   48 use Carp;
  7         14  
  7         3585  
6              
7             # ABSTRACT: Private class
8             our $VERSION = '1.15'; # VERSION
9              
10             sub new {
11 107     107 0 311 my $class = shift;
12 107 100       221 my $self = ref $_[0] ? shift : { @_ };
13              
14 107         172 bless $self, $class;
15              
16 107         267 return $self;
17             }
18              
19             sub has_version {
20 19     19 0 29 my $self = shift;
21 19         44 return defined $self->version;
22             }
23              
24             sub get {
25 9     9 0 26 my $self = shift;
26 9         32 my $repo = $self->repository;
27              
28 9         28 my $filename = $repo->get_file($self->filename);
29 9 100       47 if ( my $new_filename = $repo->{new_filename} ) {
30 4         9 $filename = $new_filename;
31             }
32              
33             ## whatever happened, record the new filename
34 9         22 $self->{filename} = $filename;
35              
36 9 50 33     82 if (defined $self->{sha1} || defined $self->{sha256}) {
37 0 0       0 unless (eval { require Digest::SHA }) {
  0         0  
38 0         0 warn "sha1 or sha256 sums are specified but cannot be checked since Digest::SHA is not installed";
39 0         0 return $filename;
40             }
41              
42 0 0       0 eval { require Digest::SHA } or return $filename;
  0         0  
43             ## verify that the SHA-1 and/or SHA-256 sums match if provided
44 0 0       0 if (defined $self->{sha1}) {
45 0         0 my $sha = Digest::SHA->new(1);
46 0         0 $sha->addfile($filename);
47 0 0       0 unless ($sha->hexdigest eq $self->{sha1}) {
48             carp "SHA-1 of downloaded $filename is ", $sha->hexdigest,
49 0         0 " Expected: ", $self->{sha1};
50 0         0 return undef;
51             }
52             }
53 0 0       0 if (defined $self->{sha256}) {
54 0         0 my $sha = Digest::SHA->new(256);
55 0         0 $sha->addfile($filename);
56 0 0       0 unless ($sha->hexdigest eq $self->{sha256}) {
57             carp "SHA-256 of downloaded $filename is ", $sha->hexdigest,
58 0         0 " Expected: ", $self->{sha256};
59 0         0 return undef;
60             }
61             }
62             }
63              
64 9         51 return $filename;
65             }
66              
67 3     3 0 44 sub platform { shift->{platform} }
68 9     9 0 31 sub repository { shift->{repository} }
69 32     32 0 3937 sub version { shift->{version} }
70 16     16 0 163 sub filename { shift->{filename} }
71              
72             1;
73              
74             __END__