|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
55
 | 
 0  | 
 7  | 
 unless ref $cas and ref($cas)->can('get') and ref($cas)->can('put')  | 
 
| 
61
 | 
 0  | 
 7  | 
 @_ == 1 && ref $_[0] eq 'HASH' ? :  | 
 
| 
63
 | 
 7  | 
 0  | 
 if (defined $p{'root'})  | 
 
| 
65
 | 
 0  | 
 7  | 
 if defined $p{'root_entry'}  | 
 
| 
74
 | 
 0  | 
 7  | 
 if @invalid  | 
 
| 
77
 | 
 0  | 
 7  | 
 unless defined $self->dir_cache and $self->dir_cache->can('clear')  | 
 
| 
82
 | 
 0  | 
 7  | 
 unless defined $root  | 
 
| 
84
 | 
 2  | 
 5  | 
 unless (ref $root and ref($root)->isa('DataStore::CAS::FS::DirEnt'))  | 
 
| 
85
 | 
 0  | 
 0  | 
 ref($root)->can('hash') ? :  | 
 
| 
 | 
 2  | 
 0  | 
 ref $root eq 'HASH' ? :  | 
 
| 
 | 
 0  | 
 2  | 
 !ref($root) ? :  | 
 
| 
100
 | 
 0  | 
 7  | 
 unless ref $self->root_entry and ref($self->root_entry)->can('type') and $self->root_entry->type eq 'dir' and defined $self->root_entry->ref  | 
 
| 
106
 | 
 0  | 
 7  | 
 unless $self->get_dir($self->root_entry->ref)  | 
 
| 
118
 | 
 0  | 
 124  | 
 ref $hash_or_file && $hash_or_file->can('hash') ? :  | 
 
| 
123
 | 
 76  | 
 48  | 
 if defined $dir  | 
 
| 
127
 | 
 0  | 
 48  | 
 unless defined($file ||= $self->store->get($hash))  | 
 
| 
153
 | 
 1  | 
 1  | 
 $path->resolve({'no_die', 1}) ? :  | 
 
| 
159
 | 
 0  | 
 3  | 
 @_ == 1 && ref $_[0] eq 'HASH' ? :  | 
 
| 
176
 | 
 21  | 
 0  | 
 if (ref $ret eq 'ARRAY')  | 
 
| 
184
 | 
 0  | 
 0  | 
 if ref $flags->{'error_out'}  | 
 
| 
185
 | 
 0  | 
 0  | 
 unless $flags->{'no_die'}  | 
 
| 
192
 | 
 203  | 
 38  | 
 ref $path_names ? :  | 
 
| 
194
 | 
 148  | 
 93  | 
 unless @$nodes  | 
 
| 
201
 | 
 0  | 
 3  | 
 if defined $flags->{'mkdir_defaults'}  | 
 
| 
213
 | 
 4  | 
 0  | 
 if ($ent->type eq 'symlink' and $flags->{'follow_symlinks'})  | 
 
| 
216
 | 
 0  | 
 4  | 
 unless defined $target and length $target  | 
 
| 
223
 | 
 0  | 
 4  | 
 if $path[0] eq ''  | 
 
| 
229
 | 
 0  | 
 757  | 
 if ($ent->type ne 'dir')  | 
 
| 
231
 | 
 0  | 
 0  | 
 unless ($flags->{'mkdir'} || 0) > 1  | 
 
| 
238
 | 
 119  | 
 638  | 
 unless defined $name and length $name and $name ne '.'  | 
 
| 
242
 | 
 9  | 
 629  | 
 if ($name eq '..')  | 
 
| 
243
 | 
 0  | 
 9  | 
 unless @$nodes > 1  | 
 
| 
251
 | 
 516  | 
 113  | 
 if ($nodes->[-1]{'subtree'})  | 
 
| 
252
 | 
 0  | 
 516  | 
 $self->case_insensitive ? :  | 
 
| 
257
 | 
 196  | 
 8  | 
 if (not defined $subnode and defined $nodes->[-1]{'dir'} || defined $ent->ref)  | 
 
| 
259
 | 
 0  | 
 196  | 
 unless $nodes->[-1]{'dir'} ||= $self->get_dir($ent->ref)  | 
 
| 
263
 | 
 190  | 
 6  | 
 if (defined(my $subent = $nodes->[-1]{'dir'}->get_entry($name)))  | 
 
| 
265
 | 
 0  | 
 190  | 
 $self->case_insensitive ? :  | 
 
| 
272
 | 
 15  | 
 614  | 
 unless ($subnode)  | 
 
| 
274
 | 
 12  | 
 3  | 
 if ($flags->{'mkdir'} or $flags->{'partial'}) { }  | 
 
| 
280
 | 
 6  | 
 6  | 
 @path ? :  | 
 
| 
288
 | 
 0  | 
 3  | 
 unless defined $nodes->[-1]{'dir'}  | 
 
| 
303
 | 
 0  | 
 10  | 
 unless ref $nodes  | 
 
| 
311
 | 
 10  | 
 0  | 
 wantarray ? :  | 
 
| 
318
 | 
 0  | 
 52  | 
 unless $ent->type eq 'dir'  | 
 
| 
322
 | 
 45  | 
 7  | 
 if (not defined $node->{'dir'} and defined $ent->ref)  | 
 
| 
323
 | 
 0  | 
 45  | 
 unless defined($node->{'dir'} = $self->get_dir($ent->ref))  | 
 
| 
327
 | 
 47  | 
 5  | 
 if (defined $node->{'dir'})  | 
 
| 
330
 | 
 0  | 
 103  | 
 $caseless ? :  | 
 
| 
333
 | 
 6  | 
 46  | 
 if (my $t = $node->{'subtree'})  | 
 
| 
336
 | 
 0  | 
 8  | 
 unless defined $subnode  | 
 
| 
337
 | 
 0  | 
 7  | 
 if ref $subnode and $subnode->{'invalid'}  | 
 
| 
338
 | 
 7  | 
 1  | 
 if (ref $subnode) { }  | 
 
| 
340
 | 
 7  | 
 0  | 
 if $subnode->{'changed'}  | 
 
| 
354
 | 
 0  | 
 4  | 
 unless ref $nodes  | 
 
| 
356
 | 
 1  | 
 3  | 
 if (not $newent) { }  | 
 
| 
358
 | 
 0  | 
 1  | 
 if $nodes->[-1]{'invalid'}  | 
 
| 
361
 | 
 0  | 
 1  | 
 unless @$nodes > 1  | 
 
| 
369
 | 
 0  | 
 1  | 
 $self->case_insensitive ? :  | 
 
| 
373
 | 
 0  | 
 0  | 
 if (ref $newent eq 'HASH' or not defined $newent->name or not defined $newent->type)  | 
 
| 
374
 | 
 3  | 
 0  | 
 ref $newent eq 'HASH' ? :  | 
 
| 
376
 | 
 2  | 
 1  | 
 unless defined $ent_hash{'name'}  | 
 
| 
378
 | 
 0  | 
 3  | 
 unless defined $ent_hash{'name'} and length $ent_hash{'name'}  | 
 
| 
380
 | 
 2  | 
 1  | 
 unless defined $ent_hash{'type'}  | 
 
| 
392
 | 
 10  | 
 13  | 
 if ($_->{'subtree'})  | 
 
| 
402
 | 
 0  | 
 2  | 
 unless ref $nodes  | 
 
| 
406
 | 
 1  | 
 1  | 
 defined $$entref->type && $$entref->type eq 'dir' ? :  | 
 
| 
407
 | 
 1  | 
 1  | 
 defined $$entref->type ? :  | 
 
| 
 | 
 0  | 
 0  | 
 ref $changes eq 'ARRAY' ? :  | 
 
| 
 | 
 2  | 
 0  | 
 ref $changes eq 'HASH' ? :  | 
 
| 
413
 | 
 1  | 
 1  | 
 $$entref->type eq 'dir' ? :  | 
 
| 
417
 | 
 0  | 
 1  | 
 if (($old_dir_ref || '') ne ($new_dir_ref || '') and $nodes->[-1]{'subtree'})  | 
 
| 
432
 | 
 16  | 
 9  | 
 if ($prev)  | 
 
| 
433
 | 
 0  | 
 16  | 
 $self->case_insensitive ? :  | 
 
| 
436
 | 
 4  | 
 21  | 
 if $_->{'changed'} and not $_->{'invalid'}  | 
 
| 
450
 | 
 0  | 
 4  | 
 unless ref $nodes  | 
 
| 
451
 | 
 3  | 
 1  | 
 unless (defined $nodes->[-1]{'dirent'}->type)  | 
 
| 
476
 | 
 0  | 
 0  | 
 if ($self->{'_nodes'} and $self->{'_nodes'}{'changed'})  | 
 
| 
486
 | 
 2  | 
 0  | 
 if ($self->_nodes and $self->_nodes->{'changed'})  | 
 
| 
489
 | 
 0  | 
 2  | 
 unless $root_node->{'dirent'}->type eq 'dir'  | 
 
| 
505
 | 
 10  | 
 0  | 
 if (my $subtree = $node->{'subtree'})  | 
 
| 
508
 | 
 10  | 
 0  | 
 if defined $v and $v eq 0 || $v->{'changed'}  | 
 
| 
514
 | 
 1  | 
 9  | 
 if not %changes and defined $node->{'dirent'}->ref  | 
 
| 
517
 | 
 4  | 
 5  | 
 if (defined $node->{'dir'} or defined $node->{'dirent'}->ref)  | 
 
| 
519
 | 
 0  | 
 4  | 
 unless $node->{'dir'} ||= $self->get_dir($node->{'dirent'}->ref)  | 
 
| 
524
 | 
 0  | 
 12  | 
 $caseless ? :  | 
 
| 
 | 
 8  | 
 4  | 
 unless $changes{$caseless ? uc $ent->name : $ent->name}  | 
 
| 
532
 | 
 8  | 
 0  | 
 if ($_->{'subtree'} and $_->{'dirent'}->type eq 'dir' and $_->{'changed'})  | 
 
| 
544
 | 
 0  | 
 9  | 
 unless @entries  | 
 
| 
547
 | 
 4  | 
 5  | 
 if $node->{'dir'}  | 
 
| 
548
 | 
 5  | 
 4  | 
 unless defined $format  | 
 
| 
576
 | 
 0  | 
 0  | 
 if length $_  | 
 
| 
577
 | 
 0  | 
 0  | 
 if $name->[-1] eq '' or $name->[-1] eq '.'  | 
 
| 
594
 | 
 111  | 
 2  | 
 if $nodes and ref $nodes->[-1] and not $nodes->[-1]{'invalid'}  | 
 
| 
599
 | 
 2  | 
 101  | 
 if ($nodes) { }  | 
 
| 
601
 | 
 2  | 
 2  | 
 if not ref $_ or $_->{'invalid'}  | 
 
| 
604
 | 
 0  | 
 2  | 
 ref $_ ? :  | 
 
| 
608
 | 
 5  | 
 98  | 
 $flags ? :  | 
 
| 
610
 | 
 100  | 
 3  | 
 if (ref $nodes) { }  | 
 
| 
615
 | 
 0  | 
 3  | 
 if ref $flags->{'error_out'}  | 
 
| 
616
 | 
 0  | 
 3  | 
 unless $flags->{'no_die'}  | 
 
| 
628
 | 
 2  | 
 4  | 
 $self->{'_node_path'} ? :  | 
 
| 
635
 | 
 1  | 
 2  | 
 $path->resolve({'no_die', 1}) ? :  | 
 
| 
649
 | 
 0  | 
 2  | 
 unless $ent->type eq 'file'  | 
 
| 
650
 | 
 0  | 
 2  | 
 unless defined(my $hash = $ent->ref)  | 
 
| 
663
 | 
 0  | 
 0  | 
 unless $ent->type eq 'dir'  | 
 
| 
664
 | 
 0  | 
 0  | 
 unless defined(my $hash = $ent->ref)  | 
 
| 
677
 | 
 0  | 
 1  | 
 @_ == 1 && ref $_[0] eq 'HASH' ? :  | 
 
| 
691
 | 
 0  | 
 3  | 
 @_ == 1 && ref $_[0] eq 'HASH' ? :  | 
 
| 
702
 | 
 4  | 
 97  | 
 if @_ and ref $_[0] eq $class  | 
 
| 
703
 | 
 0  | 
 97  | 
 unless @dirstack  | 
 
| 
709
 | 
 5  | 
 50  | 
 unless @dirstack  | 
 
| 
722
 | 
 42  | 
 50  | 
 if ($p->type eq 'dir')  | 
 
| 
735
 | 
 0  | 
 5  | 
 unless ref($x = $self->{'fs'}->_resolve_path(undef, $self->{'path'}))  | 
 
| 
753
 | 
 2  | 
 0  | 
 if @{$self->{'dirstack'};}  | 
 
| 
763
 | 
 0  | 
 0  | 
 if (@_ > 1)  | 
 
| 
774
 | 
 0  | 
 7  | 
 ref $_[0] ? :  | 
 
| 
795
 | 
 0  | 
 48  | 
 if $self->{'_recent_idx'} > @{$self->{'_recent'};}  |