Branch Coverage

blib/lib/Sys/Export/Unix/WriteFS.pm
Criterion Covered Total %
branch 52 132 39.3


line true false branch
18 5 0 !(@_ & 1) ? :
0 5 @_ == 1 && &isa_hash($_[0]) ? :
22 0 5 unless defined $attrs{'dst'}
23 0 5 unless my $dst_abs = abs_path($attrs{'dst'} =~ s[(?<=[^/])$][/]ru)
25 0 5 unless length $dst_abs > 1
35 0 5 if $tmp_dev != $dst_dev
50 0 0 if @value
59 2 3 if $self->{'_delayed_apply_stat'}
65 0 21 if $file->{'name'} =~ m[(^|^\.|^\.\.)(/|\z)]u
70 0 21 if (@old{"dev", "ino", "mode", "nlink", "uid", "gid", "rdev", "size", "atime", "mtime"} = lstat $dst_abs)
73 0 0 if ref $action eq "CODE"
75 0 0 if $action eq "ignore"
76 0 0 if $action eq "ignore_if_same" and $self->_croak_if_different($file, \%old)
77 0 0 unless $action eq "overwrite"
79 0 0 unless S_ISDIR($old{'mode'})
88 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) ? :
109 0 0 if ($file->{'mode'} & S_IFMT()) != ($old->{'mode'} & S_IFMT())
111 0 0 if defined $file->{'uid'} and $file->{'uid'} != $old->{'uid'} or defined $file->{'gid'} and $file->{'gid'} != $old->{'gid'}
113 0 0 if (S_ISLNK($file->{'mode'}))
116 0 0 if $targ ne $file->{'data'}
121 0 0 unless $file->{'mode'} == $old->{'mode'}
123 0 0 if (S_ISREG($file->{'mode'})) { }
0 0 elsif (S_ISBLK($file->{'mode'}) or S_ISCHR($file->{'mode'})) { }
127 0 0 if defined $file->{'size'} and $file->{'size'} != $old->{'size'} or not _contents_same($file, $dst_abs)
132 0 0 if $file->{'rdev'} != $old->{'rdev'}
140 0 0 unless defined $file->{'data'}
149 0 0 if (defined $file->{'rdev'}) { }
0 0 elsif (defined $file->{'rdev_major'} and defined $file->{'rdev_minor'}) { }
164 1 5 if ($file->{'nlink'} > 1)
165 1 0 if (defined(my $already = $self->_link_map->{"$file->{'dev'}:$file->{'ino'}"}))
167 0 1 unless link $already, $dst
174 3 2 if defined $file->{'dev'} and defined $file->{'ino'}
177 5 0 if (not defined $tmp or substr($tmp, 0, length $self->tmp) ne $self->tmp)
178 0 5 unless (defined $file->{'data'})
180 0 0 unless defined $file->{'data_path'}
189 0 5 unless rename $tmp, $dst
196 8 0 unless $old
205 0 5 unless length $file->{'data'}
206 0 5 unless symlink $file->{'data'}, $dst_abs
213 0 1 if (defined $file->{'rdev'} and not defined $file->{'rdev_major'} && defined $file->{'rdev_minor'})
228 0 0 unless POSIX::mkfifo($dst_abs, $file->{'mode'})
236 0 1 unless socket my $s, Socket::AF_UNIX(), Socket::SOCK_STREAM(), 0
237 0 1 unless bind $s, Socket::pack_sockaddr_un($dst_abs)
254 0 20 unless my($mode, $uid, $gid, $atime, $mtime) = (lstat $abs_path)[2, 4, 5, 8, 9]
258 0 20 if ($change_uid or $change_gid)
260 0 0 unless $change_uid and $> == 0
261 0 0 unless $change_gid and $) == 0 || grep($stat->{'gid'}, split(/ /u, $), 0))
263 0 0 if $uid >= 0 or $gid >= 0
270 6 14 if (not S_ISLNK($mode) and ($mode & 4095) != ($stat->{'mode'} & 4095))
273 0 6 if (S_ISDIR($mode) and not $stat->{'mode'} & 146 && $stat->{'mode'} & 73) { }
278 0 6 unless chmod $stat->{'mode'} & 4095, $abs_path
282 10 5 if (not S_ISLNK($mode) and defined $stat->{'mtime'} || defined $stat->{'atime'})
283 5 5 if (S_ISDIR($mode)) { }
289 0 5 unless utime $stat->{'atime'}, $stat->{'mtime'}, $abs_path
294 5 15 if @delayed
298 0 5 if (grep(($_ eq "chmod"), @delayed))
300 0 0 unless chmod $stat->{'mode'} & 4095, $abs_path
302 5 0 if (grep(($_ eq "utime"), @delayed))
303 0 5 unless utime $stat->{'atime'}, $stat->{'mtime'}, $abs_path