Branch Coverage

blib/lib/Sys/Export/Unix/WriteFS.pm
Criterion Covered Total %
branch 51 130 39.2


line true false branch
19 6 0 !(@_ & 1) ? :
0 6 @_ == 1 && &isa_hash($_[0]) ? :
23 0 6 unless defined $attrs{'dst'}
24 0 6 unless my $dst_abs = abs_path($attrs{'dst'} =~ s[(?<=[^/])$][/]ru)
26 0 6 unless length $dst_abs > 1
36 0 6 if $tmp_dev != $dst_dev
51 0 0 if @_ > 1
62 0 0 ref $val eq 'CODE' ? :
72 2 4 if $self->{'_delayed_apply_stat'}
78 0 21 if $file->{'name'} =~ m[(^|^\.|^\.\.)(/|\z)]u
83 0 21 if (@old{"dev", "ino", "mode", "nlink", "uid", "gid", "rdev", "size", "atime", "mtime"} = lstat $dst_abs)
86 0 0 if $action eq "ignore"
87 0 0 if (defined(my $difference = $self->_compare_dirent($file, \%old)))
89 0 0 if ref $action eq "CODE"
94 0 0 if $action eq "ignore"
95 0 0 unless $action eq "overwrite"
97 0 0 unless S_ISDIR($old{'mode'})
107 0 8 defined $old{'mode'} ? :
0 0 S_ISWHT($mode) ? :
1 0 S_ISSOCK($mode) ? :
0 1 S_ISFIFO($mode) ? :
1 1 S_ISBLK($mode) || S_ISCHR($mode) ? :
5 2 S_ISLNK($mode) ? :
8 7 S_ISDIR($mode) ? :
6 15 S_ISREG($mode) ? :
128 0 0 if ($file->{'mode'} & S_IFMT()) != ($old->{'mode'} & S_IFMT())
130 0 0 if defined $file->{'uid'} and $file->{'uid'} != $old->{'uid'} or defined $file->{'gid'} and $file->{'gid'} != $old->{'gid'}
132 0 0 if (S_ISLNK($file->{'mode'}))
135 0 0 if $targ ne $file->{'data'}
140 0 0 unless $file->{'mode'} == $old->{'mode'}
142 0 0 if (S_ISREG($file->{'mode'})) { }
0 0 elsif (S_ISBLK($file->{'mode'}) or S_ISCHR($file->{'mode'})) { }
146 0 0 if defined $file->{'size'} and $file->{'size'} != $old->{'size'} or not _contents_same($file, $dst_abs)
151 0 0 if $file->{'rdev'} != $old->{'rdev'}
166 0 0 if (defined $file->{'rdev'}) { }
0 0 elsif (defined $file->{'rdev_major'} and defined $file->{'rdev_minor'}) { }
180 1 5 if ($file->{'nlink'} > 1)
181 1 0 if (defined(my $already = $self->_link_map->{"$file->{'dev'}:$file->{'ino'}"}))
183 0 1 unless link $already, $dst
190 3 2 if defined $file->{'dev'} and defined $file->{'ino'}
195 0 5 if (builtin::blessed($file->{'data'}) and $file->{'data'}->can('abs_path') and substr($file->{'data'}->abs_path // '', 0, length $self->tmp) eq $self->tmp) { }
206 0 5 unless rename $tmp, $dst
213 8 0 unless $old
222 0 5 unless length $file->{'data'}
223 0 5 unless symlink $file->{'data'}, $dst_abs
230 0 1 if (defined $file->{'rdev'} and not defined $file->{'rdev_major'} && defined $file->{'rdev_minor'})
245 0 0 unless POSIX::mkfifo($dst_abs, $file->{'mode'})
253 0 1 unless socket my $s, Socket::AF_UNIX(), Socket::SOCK_STREAM(), 0
254 0 1 unless bind $s, Socket::pack_sockaddr_un($dst_abs)
271 0 20 unless my($mode, $uid, $gid, $atime, $mtime) = (lstat $abs_path)[2, 4, 5, 8, 9]
275 0 20 if ($change_uid or $change_gid)
277 0 0 unless $change_uid and $> == 0
278 0 0 unless $change_gid and $) == 0 || grep($stat->{'gid'}, split(/ /u, $), 0))
280 0 0 if $uid >= 0 or $gid >= 0
287 6 14 if (not S_ISLNK($mode) and ($mode & 4095) != ($stat->{'mode'} & 4095))
290 0 6 if (S_ISDIR($mode) and not $stat->{'mode'} & 146 && $stat->{'mode'} & 73) { }
295 0 6 unless chmod $stat->{'mode'} & 4095, $abs_path
299 10 5 if (not S_ISLNK($mode) and defined $stat->{'mtime'} || defined $stat->{'atime'})
300 5 5 if (S_ISDIR($mode)) { }
306 0 5 unless utime $stat->{'atime'}, $stat->{'mtime'}, $abs_path
311 5 15 if @delayed
315 0 5 if (grep(($_ eq "chmod"), @delayed))
317 0 0 unless chmod $stat->{'mode'} & 4095, $abs_path
319 5 0 if (grep(($_ eq "utime"), @delayed))
320 0 5 unless utime $stat->{'atime'}, $stat->{'mtime'}, $abs_path