Moose Can't get a break
Its start the long releases cycle here at the Moose-Pen
Today I am going to examine some of the results I got from my 'Devel::Cover' run.
ffile stmt bran cond sub pod time total
lib/Database/Accessor.pm 94.4 80.0 88.8 93.7 0.0 23.5 91.7
To start I can basically ignore the 'stmt' section as it is very rare to get 100% in there as I am running at '94.4' I will move onto something else.
The next col branch has 80% and following that link I get
line % coverage branch
94 50 T F if $self->gather
110 0 T F unless (defined $_->name)
494 0 T F if $self->dynamic_gather
615 50 T F if $self->no_create
626 50 T F if $self->no_update
640 50 T F if $self->no_retrieve
After I remove the ones that are getting 100% coverage. Now what branch is doing here is looking to see how far down the tree so you have all the If else parts of a statement covered;
The first fail is
sub gather_count{
my $self = shift;
return 1
if $self->gather();
}
and it is failing because there is no fall though; I think that this;
sub gather_count{
my $self = shift;
if ($self->gather()){
return 1;
}
else {
return 0;
}
}
Might do the trick. Though I am surprised that it doesn't like the first way I do the 'if' as it is a perfectly cromulent code. I will try that first and see what I get;
After the next run I still get only 50%
line % coverage branch
94 50 T F if $self->gather
Not 100% sure why that is?? Looking at some of the ones that pass I think I will try this
sub gather_count{
my $self = shift;
if ($self->gather()){
return 1;
}
elsif (!$self->gather()){
return 0;
}
}
somehow that made it worse
line % coverage branch
94 50 T F if ($self->gather) { }
50 T F elsif (not $self->gather) { }
Now this is odd because later on in my code this block;
push(@items,(@{ $self->gather->conditions }, @{ $self->gather->elements }))
if ( $self->gather());
gets 100%. Perhaps it is the way I am doing the return;
sub gather_count{
my $self = shift;
my $ return = 0;
if ($self->gather()){
$ return = 1;
}
return $return;
}
and that just got me back to 50% so I must be missing something here??
Maybe it wants something like this
sub gather_count{
my $self = shift;
return 1
if (ref($self->gather()) eq 'Database::Accessor::Gather');
}
again the same??
Ok how about one more try tonight
sub gather_count{
my $self = shift;
if (ref($self->gather()) eq 'Database::Accessor::Gather'){
return 1;
}
else {
return 0;
}
}
Same again. I guess I will have to do some more reading before I go any further.
Leave a comment