Condition Coverage

blib/lib/Atomic/Pipe.pm
Criterion Covered Total %
condition 188 291 64.6


and 2 conditions

line l !l condition
139 11 16 $_[0] and Deparse error: Can't locate object method "object_2svref" via package "B::SPECIAL" at /usr/local/lib/perl5/5.42.0/B/Deparse.pm line 5762.
333 162 71 $params{'use_io_select'} and Deparse error: Can't locate object method "object_2svref" via package "B::SPECIAL" at /usr/local/lib/perl5/5.42.0/B/Deparse.pm line 5762.

and 3 conditions

line !l l&&!r l&&r condition
41 0 0 75 "POSIX"->can("PIPE_BUF") and eval { do { &POSIX::PIPE_BUF() } }
48 0 0 75 "POSIX"->can("SSIZE_MAX") and eval { do { &POSIX::SSIZE_MAX() } }
64 0 0 75 $can_thread &&= $] >= "5.008001"
65 0 75 0 $can_thread &&= $Atomic::Pipe::Config{'useithreads'}
68 75 0 0 $can_thread and $] == "5.01"
75 0 0 $can_thread and $] == "5.01" and $Atomic::Pipe::Config{'ccname'} eq "gcc"
0 0 0 $can_thread and $] == "5.01" and $Atomic::Pipe::Config{'ccname'} eq "gcc" and $Atomic::Pipe::Config{'gccversion'}
70 0 0 0 $parts[0] == 4 and $parts[1] >= 8
73 75 0 0 $can_thread &&= !$INC{'Devel/Cover.pm'}
216 168101 4 5432754 $self->{'in_buffer_size'} and $self->{'in_buffer_size'} >= $size
219 7 1 2 $params{'eof_invalid'} and $self->{'eof'}
301 91 11 49 defined $buffer->{'lines'} and length $buffer->{'lines'}
302 52 49 1 defined $buffer->{'burst'} and length $buffer->{'burst'}
342 221 6 2 defined $params{'compression_dictionary'} and defined $params{'compression_dictionary_file'}
346 217 6 4 defined $params{'compression_dictionary'} || defined $params{'compression_dictionary_file'} and not defined $params{'compression'}
380 0 4 10 @_ and not ref $_[0]
4 0 10 @_ and not ref $_[0] and $MODE_TO_DIR{$_[0]}
564 331 54 0 $self->eof and keys %{$$self{'state'}{'buffers'};} || keys %{$$self{'state'}{'parts'};}
572 118 0 24 $self->{'eof'} and not $self->{'in_buffer_size'}
118 0 24 $self->{'eof'} and not $self->{'in_buffer_size'} and defined $line
0 0 24 $self->{'eof'} and not $self->{'in_buffer_size'} and defined $line and length $line
575 114 0 4 $params{'peek_line'} and defined $line
114 0 4 $params{'peek_line'} and defined $line and length $line
583 1 0 0 $self->{'eof'} and not $self->{'in_buffer_size'}
651 93 0 4 $peek and not $self->{'eof'}
756 21 1 18 $self->{'rh'} and not $self->{'wh'}
0 1 21 $self->{'wh'} and not $self->{'rh'}
766 1 0 0 $r and $w
814 0 0 9 $self->{'rh'} and not $self->{'wh'}
820 0 0 8 $self->{'wh'} and not $self->{'rh'}
894 9 3 1 $cache and $cache->[0] eq $data
932 218 140 2 $self->{'wh'} and $self->pending_output
1074 21 2 2 $self->{'keep_compressed'} and wantarray
1087 7 0 2800350 defined $key_bytes and length $key_bytes
1092 5 1 1 $self->{'eof'} and $self->{'in_buffer_size'}

or 2 conditions

line l !l condition
133 0 0 $self->{'read_size'} ||= 65536
163 168373 134 $self->{'in_buffer_size'} //= 0
165 0 168507 $self->{'read_size'} || 65536
171 305 144036 $self->{'read_blocking'} // 1
247 0 10 $self->{'compression_level'} // 3
272 2 37 $self->{'compression_level'} // 3
312 8 0 fcntl($fh, 3, 0) // (return undef)
463 0 119 $self->{'burst_prefix'} //= "\16"
464 0 119 $self->{'burst_postfix'} //= "\17"
465 0 119 $self->{'message_key'} //= "\20"
552 146 48 $self->{'mixed_buffer'} //= {"lines", "", "burst", "", "in_burst", 0, "in_message", 0, "strip_term", 0}
610 38 0 $self->_get_from_buffer(1, "eof_invalid", "EOF before message terminator") // (return)
617 71 0 $self->_peek_from_buffer(1, "eof_invalid", "Incomplete burst data received before end of pipe") // (next)
626 28 1 $buffer->{'burst'} //= ""
686 0 0 'Win32::API'->new('kernel32', 'PeekNamedPipe', 'NPIPPP', 'N') || die(q[Can't load PeekNamedPipe from kernel32.dll])
706 0 0 'Win32::API'->new('kernel32', 'SetNamedPipeHandleState', 'NPPP', 'N') || die(q[Can't load SetNamedPipeHandleState from kernel32.dll])
885 14 96 $_[0]{'burst_prefix'} // ""
14 96 $_[0]{'burst_postfix'} // ""
922 19748 15 $self->{'out_buffer'} //= []
945 20002 200100 ($params{'blocking'} // $self->{'write_blocking'}) // 1
947 220106 0 $self->{'out_buffer'} // (return)
970 23 820198 $self->{'burst_prefix'} // ""
971 23 820198 $self->{'burst_postfix'} // ""
981 2 235 $! == 32 or 0
986 233 2 $NONBLOCK_ERRNO{0 + $!} or 0
1004 9 86 $self->{'message_key'} // ""
1005 9 86 $self->{'burst_prefix'} // ""
1006 9 86 $self->{'burst_postfix'} // ""
1019 9 200116 $self->{'message_key'} // ""
1036 32 46 $self->{'out_buffer'} //= []
1046 800104 45 $self->{'out_buffer'} //= []
1082 700120 104 $self->{'state'} //= {}
1103 2800348 1 $self->_get_from_buffer($key->{'size'}, "eof_invalid", "EOF before end of message") // (return)
1107 2100154 700194 $state->{'parts'}{$tag} //= []

or 3 conditions

line l !l&&r !l&&!r condition
70 0 0 0 $parts[0] > 4 or $parts[0] == 4 and $parts[1] >= 8
126 15 24 0 $self->{'invalid_state'} //= @_ ? shift() : "Unknown Error"
170 144236 105 0 $self->{'_select'} //= "IO::Select"->new($rh)
239 14 8 78 defined $_[0]{'compression_dictionary'} || defined $_[0]{'compression_dictionary_file'}
268 2 8 0 $self->{'_compression_ctx'} //= "Compress::Zstd::CompressionContext"->new
269 0 10 0 $self->{'_compression_cdict'} //= $self->_build_cdict
280 4 8 0 $self->{'_decompression_ctx'} //= "Compress::Zstd::DecompressionContext"->new
281 2 10 0 $self->{'_decompression_ddict'} //= $self->_build_ddict
346 6 4 217 defined $params{'compression_dictionary'} || defined $params{'compression_dictionary_file'}
388 4 0 0 $class->_fh_mode($ifh) // croak("Could not determine filehandle mode, please specify '>&' or '<&'")
9 4 0 $mode //= $class->_fh_mode($ifh) // croak("Could not determine filehandle mode, please specify '>&' or '<&'")
389 13 0 0 $class->_mode_to_dir($mode) // croak("Invalid mode: $mode")
403 11 0 0 $class->_mode_to_dir($mode) // croak("Invalid mode: $mode")
546 194 0 0 $self->{'rh'} // croak("Not a read handle")
548 194 0 0 $self->{'burst_prefix'} // croak("missing 'burst_prefix', not in mixed_data_mode")
549 194 0 0 $self->{'burst_postfix'} // croak("missing 'burst_postfix', not in mixed_data_mode")
550 194 0 0 $self->{'message_key'} // croak("missing 'message_key', not in mixed_data_mode")
564 6 0 48 keys %{$$self{'state'}{'buffers'};} || keys %{$$self{'state'}{'parts'};}
566 194 0 185 $buffer->{'lines'} or length $buffer->{'lines'}
587 0 0 1 $self->{'eof'} or $self->{'in_buffer_size'} > $before
650 119 0 97 $self->{'in_buffer_size'} or $self->fill_buffer
686 0 0 0 $peek_named_pipe //= 'Win32::API'->new('kernel32', 'PeekNamedPipe', 'NPIPPP', 'N') || die(q[Can't load PeekNamedPipe from kernel32.dll])
706 0 0 0 $set_named_pipe_handle_state //= 'Win32::API'->new('kernel32', 'SetNamedPipeHandleState', 'NPPP', 'N') || die(q[Can't load SetNamedPipeHandleState from kernel32.dll])
767 0 0 1 $r or $w
774 0 2 0 $self->{'wh'} // $self->{'rh'}
783 9 1 0 $self->{'wh'} // $self->{'rh'}
802 3 0 0 $val + 0 || $ONE_MB
866 0 0 48 $self->{'hit_epipe'} or $self->{'invalid_state'}
885 0 14 96 $_[0]{'delimiter_size'} //= &bytes::length(scalar($_[0]{'burst_prefix'} // "")) + &bytes::length(scalar($_[0]{'burst_postfix'} // ""))
907 8 1 4 $self->{'delimiter_size'} // $self->delimiter_size
919 19751 8 6 $self->{'delimiter_size'} // $self->delimiter_size
931 2 24 360 $self->{'hit_epipe'} or $self->{'invalid_state'}
945 4 20002 200100 $params{'blocking'} // $self->{'write_blocking'}
953 800191 19795 233 $blocking or defined $got
973 23 0 820198 length $prefix or length $postfix
1020 200030 95 0 $self->{'adjusted_dsize'} // $self->_adjusted_dsize
1034 32 1 45 $self->{'delimiter_size'} // $self->delimiter_size
1045 800104 4 41 $self->{'delimiter_size'} // $self->delimiter_size