File Coverage

blib/lib/Enbld/Target/Attribute/Version.pm
Criterion Covered Total %
statement 44 44 100.0
branch 10 10 100.0
condition n/a
subroutine 8 8 100.0
pod 0 2 0.0
total 62 64 96.8


line stmt bran cond sub pod time code
1             package Enbld::Target::Attribute::Version;
2              
3 3     3   7657 use strict;
  3         6  
  3         76  
4 3     3   9 use warnings;
  3         3  
  3         66  
5              
6 3     3   12 use version;
  3         3  
  3         16  
7 3     3   211 use Carp;
  3         4  
  3         189  
8              
9 3     3   14 use parent qw/Enbld::Target::AttributeExtension::Word/;
  3         6  
  3         14  
10              
11             sub initialize {
12 55     55 0 80 my ( $self, $param ) = @_;
13              
14 55 100       163 if ( ! defined $param ) {
15             $self->{callback} = sub {
16 34     34   55 my $attributes = shift;
17              
18 34         141 my $list = $attributes->SortedVersionList;
19              
20 34 100       172 if ( $attributes->VersionCondition eq 'latest' ) {
21 20         60 return $list->[-1];
22             }
23              
24 14 100       18 if ( grep { $attributes->VersionCondition eq $_ } @{ $list} ) {
  28         106  
  14         30  
25 13         61 return $attributes->VersionCondition;
26             }
27              
28 1         4 my $err = "Invalid Version Condition:" .
29             $attributes->VersionCondition . ", ".
30             "please check install condition";
31 1         5 require Enbld::Error;
32 1         6 croak( Enbld::Error->new( $err ));
33 47         282 };
34              
35 47         98 return $self;
36             }
37              
38 8 100       10 if ( $param ) {
39 7         23 $self->SUPER::initialize( $param );
40 7         9 return $self;
41             }
42              
43 1         5 require Enbld::Exception;
44 1         1 my $err = "Attribute 'Version' isn't defined";
45 1         4 croak( Enbld::Exception->new( $err ));
46             }
47              
48             sub validate {
49 96     96 0 147 my ( $self, $string ) = @_;
50              
51 96         214 $self->SUPER::validate( $string );
52              
53 93         445 my $form = $self->{attributes}->VersionForm;
54 93 100       560 unless ( $string =~ /^$form$/ ) {
55 1         2 my $err = 'Attribute Version is NOT valid version string.';
56 1         4 require Enbld::Exception;
57 1         4 croak( Enbld::Exception->new( $err, $string ));
58             }
59              
60 92         159 return $string;
61             }
62              
63             1;