Branch Coverage

lib/Archive/Tar.pm
Criterion Covered Total %
branch 153 286 53.5


line true false branch
32 0 3 $@ ? :
99 49 142 if @_
106 0 29 if ref $class
112 2 27 if (@_)
113 0 2 unless ($obj->read(@_))
176 1 22 if (not defined $file) { }
183 0 22 unless my $handle = $self->_get_handle($file, $gzip, sub {
186 0 22 unless my $data = $self->_read_tar($handle, $opts)
190 4 18 wantarray ? :
195 0 35 unless defined $file
196 0 35 if ref $file
204 28 7 if ($gzip or sub {
211 0 7 if ($gzip) { }
221 0 35 unless ($fh->open($file, $mode))
226 7 28 if $bin
233 0 22 unless my $handle = shift @_
241 1 21 if $count > 0
255 22 160 unless ($read++)
257 0 22 if ($chunk =~ /$gzip/)
264 0 182 if length $chunk != 512
269 90 92 if $chunk eq "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
277 0 92 unless ($nulls eq substr($chunk, 500, 12))
288 20 72 if defined $real_name
290 0 92 unless ($entry = 'Archive::Tar::File'->new('chunk', $chunk, %extra_args))
300 0 92 if $entry->is_label
302 72 20 if (length $entry->type and $entry->is_file || $entry->is_longlink)
304 0 72 if ($entry->is_file and not $entry->validate)
309 0 0 if length $name > 100
324 0 72 if ($handle->read($$data, $block) < $block)
335 20 52 if ($entry->is_longlink)
363 20 72 if ($entry->is_longlink) { }
20 52 elsif (defined $real_name) { }
372 6 66 if $extract and not $entry->is_longlink and not $entry->is_unknown and not $entry->is_label
378 0 72 if $entry->name eq ''
382 6 66 $extract ? :
384 1 71 if ($limit)
385 1 0 unless $entry->is_longlink or $entry->is_dir
386 1 0 unless $count
409 0 1 unless my $full = shift @_
411 1 0 if $self->_find_entry($full)
439 8 0 unless $$self{'cwd'}
442 2 6 if (@args) { }
446 1 1 if (UNIVERSAL::isa($file, 'Archive::Tar::File')) { }
455 0 1 unless $file eq $entry->full_path
462 0 1 unless ($found)
475 0 8 unless (scalar @files)
482 0 26 unless ($self->_extract_file($entry))
509 0 43 unless my $file = shift @_
512 0 43 unless my $entry = $self->_find_entry($file)
520 0 75 unless my $entry = shift @_
524 41 34 defined $alt ? :
529 41 34 if (defined $alt) { }
539 20 55 if ('File::Spec'->file_name_is_absolute($dirs)) { }
544 26 29 defined $$self{'cwd'} ? :
550 0 55 unless (defined $dir)
551 0 0 if $^W
557 0 75 if (-e $dir and not -d _)
558 0 0 if $^W
562 3 72 unless (-d _)
564 0 3 if ($@)
571 4 71 if $entry->is_dir
575 0 71 if ($entry->is_unknown)
580 71 0 if (length $entry->type and $entry->is_file) { }
582 0 71 unless $fh->open('>' . $full)
587 65 6 if ($entry->size)
589 0 65 unless syswrite $fh, $entry->data
595 0 71 unless close $fh
601 0 0 unless $self->_make_special_file($entry, $full)
604 0 71 unless utime time, $entry->mtime - 0, $full
607 0 71 if ($CHOWN and 0)
608 0 0 unless chown $entry->uid, $entry->gid, $full
614 71 0 if ($CHMOD and not -l $full)
615 0 71 unless chmod $entry->mode, $full
624 0 0 unless my $entry = shift @_
625 0 0 unless defined $file
629 0 0 if ($entry->is_symlink) { }
0 0 elsif ($entry->is_hardlink) { }
0 0 elsif ($entry->is_fifo) { }
0 0 elsif ($entry->is_blockdev or $entry->is_chardev) { }
0 0 elsif ($entry->is_socket) { }
632 0 0 unless symlink $entry->linkname, $file
639 0 0 if $fail
645 0 0 unless link $entry->linkname, $file
652 0 0 if $fail
656 0 0 unless not system 'mknod', $file, 'p'
660 0 0 $entry->is_blockdev ? :
662 0 0 unless not system 'mknod', $file, $mode, $entry->devmajor, $entry->devminor
673 0 0 $err ? :
680 0 0 unless my $entry = shift @_
681 0 0 unless defined $file
687 0 0 unless ($orig)
696 0 0 unless $self->_extract_file($clone, $file)
725 0 13 unless ($self->_data)
726 0 0 unless $self->read
729 13 0 if (@$aref == 0 or @$aref == 1 and $$aref[0] eq 'name') { }
751 0 78 unless (defined $file)
757 11 67 if UNIVERSAL::isa($file, 'Archive::Tar::File')
761 65 104 if $path eq $file
782 31 4 unless @_
800 0 8 unless my $entry = $self->_find_entry(shift @_)
813 0 1 unless my $entry = $self->_find_entry(shift @_)
831 0 1 unless defined $file
832 0 1 unless defined $new
834 0 1 unless my $entry = $self->_find_entry($file)
868 0 2 unless my $self = shift @_
906 3 13 unless defined $file
908 16 0 unless defined $ext_prefix
915 0 0 $HAS_IO_STRING ? :
3 0 $HAS_PERLIO ? :
13 3 length $file ? :
933 1 42 if ($DO_NOT_USE_PREFIX) { }
937 0 1 length $ext_prefix ? :
952 0 42 if length $ext_prefix
966 6 37 if ($make_longlink)
973 0 6 unless ($longlink)
997 0 49 if $link_ok
1001 0 49 unless ($header)
1007 0 49 unless (print $handle $header)
1013 40 9 if ($link_ok or $data_ok)
1014 0 40 unless (print $handle $clone->data)
1021 40 0 if $clone->size % 512
1028 0 16 unless print $handle "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" x 2
1034 3 0 $HAS_PERLIO ? :
13 3 length $file ? :
1044 0 49 unless my $entry = shift @_
1045 49 0 unless defined $ext_prefix
1049 0 49 unless defined $prefix
1060 0 49 if length $ext_prefix
1065 3 46 if length $prefix >= 155
1084 0 49 $no_prefix ? :
1115 0 10 unless my(@files) = @_
1119 0 10 unless (-e $file)
1125 0 10 unless ($obj)
1196 1 8 unless ($obj)
1229 0 4 if ($WARN)
1230 0 0 $DEBUG ? :
1238 0 8 shift @_ ? :
1350 0 6 unless defined $file
1354 0 6 unless (@files)
1385 0 2 unless defined $file
1389 0 2 unless $tar
1410 0 6 unless defined $file
1413 0 6 unless my $tar = $class->new