Condition Coverage

blib/lib/DataStore/CAS/FS.pm
Criterion Covered Total %
condition 89 176 50.5


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 0 4 $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'}
377 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 0 2 $self->_nodes and $self->_nodes->{'changed'}
507 1 10 0 defined $v and $v eq 0 || $$v{'changed'}
513 9 0 1 not %changes and defined $$node{'dirent'}->ref
532 2 0 8 $$_{'subtree'} and $$_{'dirent'}->type eq 'dir'
2 0 8 $$_{'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}
230 0 0 $$flags{'mkdir'} || 0
352 0 4 $flags ||= {}
379 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 4 3 $$flags{'mkdir'} or $$flags{'partial'}
275 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
507 0 10 0 $v eq 0 || $$v{'changed'}
517 4 0 5 defined $$node{'dir'} or defined $$node{'dirent'}->ref
518 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")