Branch Coverage

blib/lib/IO/Async/Internals/ChildManager.pm
Criterion Covered Total %
branch 95 156 60.9


line true false branch
30 0 0 if $> == $uid
41 0 0 if $) == $gid
67 0 0 unless keys %gotgroups
78 0 41 unless my $loop = delete $params{'loop'}
99 4 334 if (%params)
103 4 330 if defined $command and defined $code
106 4 326 unless defined $command or defined $code
109 303 23 defined $setup ? :
120 0 324 unless ($readpipe, $writepipe) = "IO::Async::OS"->pipepair
124 123 201 if (defined $command)
125 114 9 ref $command ? :
152 1 302 unless ref $setup eq "ARRAY"
154 53 249 unless @$setup
164 14 417 if $key eq "stdin"
165 22 409 if $key eq "stdout"
166 3 428 if $key eq "stderr"
169 127 304 if ref $key and eval { do { $key->fileno; 1 } }
171 419 12 if ($key =~ /^fd(\d+)$/u) { }
3 9 elsif ($key eq 'env') { }
1 8 elsif ($key eq 'nice') { }
1 7 elsif ($key eq 'chdir') { }
2 5 elsif ($key eq 'setuid') { }
2 3 elsif ($key eq 'setgid') { }
2 1 elsif ($key eq 'setgroups') { }
175 128 291 if (not $ref) { }
253 38 elsif ($ref eq 'ARRAY') { }
38 0 elsif ($ref eq 'GLOB' or eval { do { $value->isa('IO::Handle') } }) { }
189 0 419 unless grep {$_ eq $operation;} "open", "close", "dup", "keep"
193 0 3 unless ref $value eq "HASH"
196 0 1 unless $value =~ /^\d+$/u
202 0 1 unless -d $value
205 0 2 unless $value =~ /^\d+$/u
208 0 2 unless $value =~ /^\d+$/u
209 0 2 if $has_setgroups
212 0 2 unless ref $value eq "ARRAY"
250 288 382 if (not defined $dollarbang) { }
191 191 elsif (not defined $dollarat) { }
251 194 94 if (length $$buffref >= 8)
258 191 0 if (length $$buffref >= $length_dollarat)
264 285 0 if ($eof)
265 94 191 unless defined $dollarbang
266 94 191 unless (defined $length_dollarat)
273 91 194 if (defined $exitcode)
286 192 94 if ($pipeclosed)
313 22 7 if (@$setup)
318 0 41 unless $key =~ /^fd(\d+)$/u
321 27 14 if $fd > $max_fd
322 0 41 if $fd == fileno $writepipe
326 0 41 if ($operation eq "close")
331 39 2 if ($operation eq "dup")
342 2 39 if ($operation eq "keep")
349 128 309 if $fds_refcount{$_}
350 29 280 if $_ == fileno $writepipe
354 22 7 if (@$setup)
355 0 22 if ($writepipe_clashes)
358 0 0 unless dup2(fileno $writepipe, $max_fd)
360 0 0 unless open $writepipe, ">&=$max_fd"
366 41 0 if ($key =~ /^fd(\d+)$/u) { }
0 0 elsif ($key eq 'env') { }
0 0 elsif ($key eq 'nice') { }
0 0 elsif ($key eq 'chdir') { }
0 0 elsif ($key eq 'setuid') { }
0 0 elsif ($key eq 'setgid') { }
0 0 elsif ($key eq 'setgroups') { }
370 39 2 if ($operation eq "dup")
373 39 0 if ($from != $fd)
374 0 39 if (exists $dup_from{$fd})
375 0 0 unless defined($dup_from{$fd} = dup($fd))
381 0 39 unless dup2($real_from, $fd)
385 39 0 unless ($fds_refcount{$from} or $fd_in_use{$from})
391 0 41 if ($operation eq "open")
393 0 0 unless open my $fh, $mode, $filename
396 0 0 unless dup2($from, $fd)
405 0 0 unless nice($value)
408 0 0 unless chdir $value
411 0 0 unless setuid($value)
414 0 0 unless setgid($value)
417 0 0 unless setgroups(@$value)