File Coverage

lib/CPANPLUS/Module/Signature.pm
Criterion Covered Total %
statement 32 35 91.4
branch 6 12 50.0
condition 1 3 33.3
subroutine 6 6 100.0
pod 0 1 0.0
total 45 57 78.9


line stmt bran cond sub pod time code
1             package CPANPLUS::Module::Signature;
2              
3 15     15   388 use strict;
  15         290  
  15         1991  
4              
5              
6 15     15   237 use Cwd;
  15         141  
  15         930  
7 15     15   233 use CPANPLUS::Error;
  15         356  
  15         337  
8 15     15   279 use Params::Check qw[check];
  15         139  
  15         299  
9 15     15   952 use Module::Load::Conditional qw[can_load];
  15         190  
  15         319  
10              
11              
12             ### detached sig, not actually used afaik --kane ###
13             #sub get_signature {
14             # my $self = shift;
15             #
16             # my $clone = $self->clone;
17             # $clone->package( $self->package . '.sig' );
18             #
19             # return $clone->fetch;
20             #}
21              
22             sub check_signature {
23 4     4 0 69     my $self = shift;
24 4         52     my $cb = $self->parent;
25 4         57     my $conf = $cb->configure_object;
26 4         50     my %hash = @_;
27              
28 4         33     my $verbose;
29 4         63     my $tmpl = {
30                     verbose => {default => $conf->get_conf('verbose'), store => \$verbose},
31                 };
32              
33 4 50       59     check( $tmpl, \%hash ) or return;
34              
35 4 50       64     my $dir = $self->status->extract or (
36                             error( loc( "Do not know what dir '%1' was extracted to; ".
37                                         "Cannot check signature", $self->module ) ),
38                             return );
39              
40 4         299     my $cwd = cwd();
41 4 50       130268     unless( $cb->_chdir( dir => $dir ) ) {
42 0         0         error(loc( "Could not chdir to '%1', cannot verify distribution '%2'",
43                                 $dir, $self->module ));
44 0         0         return;
45                 }
46              
47              
48             ### check prerequisites
49 4         34     my $flag;
50 4         220     my $use_list = { 'Module::Signature' => '0.06' };
51 4 50       412     if( can_load( modules => $use_list, verbose => 1 ) ) {
52 4         646         my $rv = Module::Signature::verify();
53              
54 4 50 33     404         unless ($rv eq Module::Signature::SIGNATURE_OK() or
55                         $rv eq Module::Signature::SIGNATURE_MISSING()
56                     ) {
57 0         0             $flag++; # whoops, bad sig
58                     }
59                 }
60              
61 4         339     $cb->_chdir( dir => $cwd );
62 4 50       664     return $flag ? 0 : 1;
63             }
64              
65             1;
66