Condition Coverage

blib/lib/DataStore/CAS/FS.pm
Criterion Covered Total %
condition 88 176 50.0


and 3 conditions

line !l l&&!r l&&r condition
55 0 0 7 ref $cas and ref($cas)->can('get')
0 0 7 ref $cas and ref($cas)->can('get') and ref($cas)->can('put')
61 7 0 0 @_ == 1 && ref $_[0] eq 'HASH'
77 0 0 7 defined $self->dir_cache and $self->dir_cache->can('clear')
84 0 2 5 ref $root and ref($root)->isa('DataStore::CAS::FS::DirEnt')
100 0 0 7 ref $self->root_entry and ref($self->root_entry)->can('type')
0 0 7 ref $self->root_entry and ref($self->root_entry)->can('type') and $self->root_entry->type eq 'dir'
0 0 7 ref $self->root_entry and ref($self->root_entry)->can('type') and $self->root_entry->type eq 'dir' and defined $self->root_entry->ref
118 124 0 0 ref $hash_or_file && $hash_or_file->can('hash')
159 3 0 0 @_ == 1 && ref $_[0] eq 'HASH'
213 757 4 0 $ent->type eq 'symlink' and $flags->{'follow_symlinks'}
216 0 0 4 defined $target and length $target
238 0 113 644 defined $name and length $name
113 6 638 defined $name and length $name and $name ne '.'
257 425 204 0 not defined $subnode and defined $nodes->[-1]{'dir'} || defined $ent->ref
322 2 5 45 not defined $node->{'dir'} and defined $ent->ref
337 1 7 0 ref $subnode and $subnode->{'invalid'}
378 0 0 3 defined $ent_hash{'name'} and length $ent_hash{'name'}
393 0 10 0 ++$_->{'invalid'} and &_invalidate_subtree
406 1 0 1 defined $$entref->type && $$entref->type eq 'dir'
417 1 1 0 ($old_dir_ref || '') ne ($new_dir_ref || '') and $nodes->[-1]{'subtree'}
436 21 0 4 $_->{'changed'} and not $_->{'invalid'}
476 0 0 0 $self->{'_nodes'} and $self->{'_nodes'}{'changed'}
486 0 2 0 $self->_nodes and $self->_nodes->{'changed'}
508 1 10 0 defined $v and $v eq 0 || $v->{'changed'}
514 9 0 1 not %changes and defined $node->{'dirent'}->ref
532 2 0 8 $_->{'subtree'} and $_->{'dirent'}->type eq 'dir'
2 8 0 $_->{'subtree'} and $_->{'dirent'}->type eq 'dir' and $_->{'changed'}
594 101 2 111 $nodes and ref $nodes->[-1]
103 0 111 $nodes and ref $nodes->[-1] and not $nodes->[-1]{'invalid'}
677 1 0 0 @_ == 1 && ref $_[0] eq 'HASH'
691 3 0 0 @_ == 1 && ref $_[0] eq 'HASH'
702 97 0 4 @_ and ref $_[0] eq $class

or 2 conditions

line l !l condition
171 0 21 $flags ||= {}
193 195 46 $nodes ||= []
194 139 9 $self->{'_nodes'} ||= {'dirent', $self->root_entry}
231 0 0 $flags->{'mkdir'} || 0
352 0 4 $flags ||= {}
380 0 2 $nodes->[-1]{'dirent'}->type || 'file'
400 0 2 $flags ||= {}
417 1 1 $old_dir_ref || ''
1 1 $new_dir_ref || ''
775 0 7 $p{'size'} ||= 32
776 0 7 $p{'_by_hash'} ||= {}
777 0 7 $p{'_recent'} ||= []
778 0 7 $p{'_recent_idx'} ||= 0

or 3 conditions

line l !l&&r !l&&!r condition
127 0 48 0 $file ||= $self->store->get($hash)
233 0 0 0 $mkdir_defaults ||= _build_mkdir_defaults($flags)
257 125 71 8 defined $nodes->[-1]{'dir'} || defined $ent->ref
259 125 71 0 $nodes->[-1]{'dir'} ||= $self->get_dir($ent->ref)
274 8 0 7 $flags->{'mkdir'} or $flags->{'partial'}
280 3 3 0 $mkdir_defaults ||= _build_mkdir_defaults($flags)
373 3 0 0 ref $newent eq 'HASH' or not defined $newent->name
3 0 0 ref $newent eq 'HASH' or not defined $newent->name or not defined $newent->type
508 0 0 10 $v eq 0 || $v->{'changed'}
517 4 0 5 defined $node->{'dir'} or defined $node->{'dirent'}->ref
519 4 0 0 $node->{'dir'} ||= $self->get_dir($node->{'dirent'}->ref)
574 0 0 0 $self->{'canonical_path'} ||= do { my $name = $self->path_names; my $path = '/' . join('/', grep({$_ ne '.' if length $_;} @$name)); $path .= '/' if $name->[-1] eq '' or $name->[-1] eq '.'; $path =~ s[//+][/]g; $path }
577 0 0 0 $name->[-1] eq '' or $name->[-1] eq '.'
601 2 0 2 not ref $_ or $_->{'invalid'}
647 0 2 0 $_[0]{'file'} ||= do { my $ent = $_[0]->dirent; Carp::croak('Path is not a file') unless $ent->type eq 'file'; Carp::croak('File was not stored in CAS') unless defined(my $hash = $ent->ref); $_[0]->filesystem->get($hash) }
661 0 0 0 $_[0]{'dir'} ||= do { my $ent = $_[0]->dirent; Carp::croak('Path is not a directory') unless $ent->type eq 'dir'; Carp::croak('Directory was not stored in CAS') unless defined(my $hash = $ent->ref); $_[0]->filesystem->get_dir($hash) }
693 6 0 0 defined $self->{$_} or croak("'${_}' is required")