File Coverage

lib/Test/File/ShareDir/Object/Module.pm
Criterion Covered Total %
statement 44 48 91.6
branch n/a
condition n/a
subroutine 13 14 92.8
pod 8 8 100.0
total 65 70 92.8


line stmt bran cond sub pod time code
1 4     4   722 use 5.006; # pragmas
  4         10  
  4         146  
2 4     4   17 use strict;
  4         6  
  4         115  
3 4     4   14 use warnings;
  4         5  
  4         527  
4              
5             package Test::File::ShareDir::Object::Module;
6              
7             our $VERSION = '1.001000';
8              
9             # ABSTRACT: Object Oriented ShareDir creation for modules
10              
11             our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY
12              
13              
14              
15              
16              
17              
18              
19              
20              
21              
22              
23              
24              
25             use Class::Tiny {
26             inc => sub {
27 3         1294 require Test::File::ShareDir::Object::Inc;
28 3         42 return Test::File::ShareDir::Object::Inc->new();
29             },
30             modules => sub {
31 0         0 return {};
32             },
33             root => sub {
34 2         196 require Path::Tiny;
35 2         9 return Path::Tiny::path(q[./])->absolute;
36             },
37 4     4   2018 };
  4         8416  
  4         37  
38              
39 4     4   1926 use Carp qw( carp );
  4         6  
  4         1689  
40              
41              
42              
43              
44              
45              
46              
47              
48              
49              
50              
51              
52              
53              
54              
55              
56              
57              
58              
59 3     3   1793 sub __rcopy { require File::Copy::Recursive; goto \&File::Copy::Recursive::rcopy; }
  3         17756  
60              
61              
62              
63              
64              
65              
66              
67              
68              
69             sub module_names {
70 3     3 1 6 my ( $self, ) = @_;
71 3         3 return keys %{ $self->modules };
  3         85  
72             }
73              
74              
75              
76              
77              
78              
79              
80              
81              
82             sub module_share_target_dir {
83 3     3 1 8 my ( $self, $module ) = @_;
84              
85 3         7 $module =~ s/::/-/msxg;
86              
87 3         71 return $self->inc->module_tempdir->child($module);
88             }
89              
90              
91              
92              
93              
94              
95              
96              
97              
98             sub module_share_source_dir {
99 3     3 1 4 my ( $self, $module ) = @_;
100 3         2210 require Path::Tiny;
101 3         41265 return Path::Tiny::path( $self->modules->{$module} )->absolute( $self->root );
102             }
103              
104              
105              
106              
107              
108              
109              
110              
111              
112             sub install_module {
113 3     3 1 6 my ( $self, $module ) = @_;
114 3         9 my $source = $self->module_share_source_dir($module);
115 3         603 my $target = $self->module_share_target_dir($module);
116 3         257 return __rcopy( $source, $target );
117             }
118              
119              
120              
121              
122              
123              
124              
125              
126              
127             sub install_all_modules {
128 3     3 1 9 my ($self) = @_;
129 3         7 for my $module ( $self->module_names ) {
130 3         44 $self->install_module($module);
131             }
132 3         4303 return;
133             }
134              
135              
136              
137              
138              
139              
140              
141             sub add_to_inc {
142 0     0 1 0 my ($self) = @_;
143 0         0 carp 'add_to_inc deprecated since 1.001000, use register';
144 0         0 return $self->register;
145             }
146              
147              
148              
149              
150              
151              
152              
153              
154              
155              
156              
157             sub register {
158 3     3 1 7 my ($self) = @_;
159 3         106 $self->inc->register;
160 3         9 return;
161             }
162              
163              
164              
165              
166              
167              
168              
169              
170              
171              
172              
173             sub clear {
174 1     1 1 3 my ($self) = @_;
175 1         58 $self->inc->clear;
176 1         21 return;
177             }
178              
179             1;
180              
181             __END__