File Coverage

lib/CPANPLUS/Module/Fake.pm
Criterion Covered Total %
statement 30 32 93.8
branch 3 6 50.0
condition 2 3 66.7
subroutine 8 8 100.0
pod 1 1 100.0
total 44 50 88.0


line stmt bran cond sub pod time code
1             package CPANPLUS::Module::Fake;
2              
3              
4 15     15   288 use CPANPLUS::Error;
  15         217  
  15         314  
5 15     15   360 use CPANPLUS::Module;
  15         272  
  15         399  
6 15     15   2126 use CPANPLUS::Module::Author::Fake;
  15         1001  
  15         1368  
7 15     15   265 use CPANPLUS::Internals;
  15         138  
  15         2055  
8              
9 15     15   232 use strict;
  15         140  
  15         207  
10 15     15   224 use vars qw[@ISA];
  15         170  
  15         250  
11 15     15   223 use Params::Check qw[check];
  15         143  
  15         241  
12              
13             @ISA = qw[CPANPLUS::Module];
14             $Params::Check::VERBOSE = 1;
15              
16             =pod
17            
18             =head1 NAME
19            
20             CPANPLUS::Module::Fake
21            
22             =head1 SYNOPSIS
23            
24             my $obj = CPANPLUS::Module::Fake->new(
25             module => 'Foo',
26             path => 'ftp/path/to/foo',
27             author => CPANPLUS::Module::Author::Fake->new,
28             package => 'fake-1.1.tgz',
29             _id => $cpan->_id,
30             );
31            
32             =head1 DESCRIPTION
33            
34             A class for creating fake module objects, for shortcut use internally
35             by CPANPLUS.
36            
37             Inherits from C<CPANPLUS::Module>.
38            
39             =head1 METHODS
40            
41             =head2 new( module => $mod, path => $path, package => $pkg, [_id => DIGIT] )
42            
43             Creates a dummy module object from the above parameters. It can
44             take more options (same as C<< CPANPLUS::Module->new >> but the above
45             are required.
46            
47             =cut
48              
49             sub new {
50 76     76 1 2457     my $class = shift;
51 76         1958     my %hash = @_;
52                 
53 76         816     local $Params::Check::ALLOW_UNKNOWN = 1;
54                 
55 76         2969     my $tmpl = {
56                     module => { required => 1 },
57                     path => { required => 1 },
58                     package => { required => 1 },
59                     _id => { default => CPANPLUS::Internals->_last_id },
60                     author => { default => '' },
61                 };
62                 
63 76 50       1300     my $args = check( $tmpl, \%hash ) or return;
64                 
65 76   66     1605     $args->{author} ||= CPANPLUS::Module::Author::Fake->new(
66                                                                     _id => $args->{_id} );
67                 
68 76 50       2413     my $obj = CPANPLUS::Module->new( %$args ) or return;
69                 
70 76 50       1748     unless( $obj->_id ) {
71 0         0         error(loc("No '%1' specified -- No CPANPLUS object associated!",'_id'));
72 0         0         return;
73                 }
74                 
75             ### rebless object ###
76 76         2891     return bless $obj, $class;
77             }    
78              
79             1;
80              
81             # Local variables:
82             # c-indentation-style: bsd
83             # c-basic-offset: 4
84             # indent-tabs-mode: nil
85             # End:
86             # vim: expandtab shiftwidth=4:
87