Branch Coverage

lib/HTTP/Promise/Message.pm
Criterion Covered Total %
branch 225 362 62.1


line true false branch
39 34 62 if (@_ == 1 and ref $_[0] eq 'HASH') { }
46 16 elsif (@_ >= 1 and $self->_is_array($_[0]) || $self->_is_a($_[0], 'HTTP::Promise::Headers') || $self->_is_a($_[0], 'HTTP::Headers') || !defined($_[0])) { }
1 30 elsif (@_ and ref $_[0] ne 'HASH') { }
60 23 4 if (!ref($_[0]) || ref $_[0] && overload::Method($_[0], '""') || $self->_is_a($_[0], 'HTTP::Promise::Body') || $self->_is_a($_[0], 'HTTP::Promise::Body::Form') and @_ == 1 || @_ > 2 && @_ % 2 && ref $_[1] ne 'HASH' || @_ == 2 && ref $_[1] eq 'HASH')
84 45 50 if (defined $headers) { }
86 16 29 if ($self->_is_a($headers, 'HTTP::Promise::Headers') or $self->_is_a($headers, 'HTTP::Headers')) { }
29 0 elsif ($self->_is_array($headers)) { }
105 0 95 if (not defined $content and $headers->exists("Content"))
112 29 66 if (defined $content)
114 1 28 unless $self->_utf8_downgrade($content)
118 94 0 unless exists $self->{'entity'}
120 94 0 unless exists $self->{'protocol'}
121 86 8 unless exists $self->{'version'}
123 0 94 unless $self->SUPER::init(@_)
125 94 0 unless ($ent)
127 0 94 unless $self->_load_class("HTTP::Promise::Entity")
138 28 66 if (defined $content)
140 0 28 if ($self->_is_a($content, ['HTTP::Promise::Body', 'HTTP::Promise::Body::Form'])) { }
142 0 0 unless $ent->body($content)
147 0 28 unless defined $body
151 7 21 if ($headers->content_encoding->length)
164 5 0 if (defined $_[0])
166 1 4 $self->_is_scalar($_[0]) ? :
1 4 unless $self->_utf8_downgrade($self->_is_scalar($_[0]) ? ${$_[0];} : $_[0])
170 0 4 unless ($ent = $self->entity)
172 0 0 unless $self->_load_class("HTTP::Promise::Entity")
177 3 1 if ($body) { }
179 0 3 unless $self->_is_a($body, "HTTP::Promise::Body::Scalar")
206 0 4 unless ($ent)
208 0 0 unless $self->_load_class("HTTP::Promise::Entity")
212 2 2 if (not +($self->content_type || '') =~ m[^multipart/]) { }
0 2 elsif ($ent->parts->is_empty and ($ent->body and not $ent->body->is_empty)) { }
2 0 elsif ($self->content_type->index('boundary') == -1) { }
214 0 2 unless $ent->make_multipart("form-data")
235 0 4 if (defined $this and !ref($this) || $self->_is_scalar($this) && overload::Method($this, '""'))
243 4 0 unless ($self->_is_a($this, "HTTP::Promise::Entity"))
245 0 4 unless $self->_is_a($this, "HTTP::Promise::Message")
247 0 4 unless ($part_ent)
253 0 4 if defined $name
258 0 0 if defined $name
272 0 0 unless $self->_load_class("HTTP::Promise::Body::Form")
275 0 0 if ($type eq 'multipart/form-data') { }
0 0 elsif ($type eq 'application/json') { }
0 0 elsif ($self->can('uri') and $uri = $self->uri and $uri->query and not defined $payload && length $payload) { }
281 0 0 unless length $payload
290 0 0 if ($@)
307 0 0 length($payload // '') ? :
314 21 3 unless defined $eol
317 24 0 $ent ? :
326 89 26 if (my $own_method = $self->SUPER::can($method))
331 23 3 ref $self ? :
334 12 14 if ($headers->can($method)) { }
355 1 2 if $self->entity and $self->entity->body
357 3 0 if $self->entity
370 7 2 if ($ent = $self->entity and $opts->{'clone_entity'}) { }
384 1 8 if defined $proto and length $proto
385 1 8 if defined $vers and length $vers
393 17 29 if (@_) { }
398 1 16 unless defined $_
399 1 15 if ref $_ and not $self->_is_scalar($_)
401 1 14 if $self->_is_scalar($_)
402 1 14 $self->_is_scalar($_) ? :
1 14 unless $self->_utf8_downgrade($self->_is_scalar($_) ? $$_ : $_)
407 0 15 unless ($ent)
410 0 0 unless $self->_load_class("HTTP::Promise::Entity")
415 7 8 unless ($body)
418 0 7 unless defined $body
421 0 7 unless (defined $rv)
424 0 7 unless defined $rv
429 0 15 if ($has_ref > 1) { }
433 0 0 $self->_is_scalar($_) ? :
0 0 unless $io->print($self->_is_scalar($_) ? $$_ : $_)
438 1 14 @_ == 1 && $self->_is_scalar($_[0]) ? :
0 15 unless $io->print(@_ == 1 && $self->_is_scalar($_[0]) ? ${$_[0];} : @_)
447 0 29 unless $ent
449 1 28 unless $body
461 0 5 unless $ent
468 1 3 if (@_) { }
470 0 1 unless $self->_is_scalar($_[0])
484 0 2 unless $self->_load_class("HTTP::Promise::Stream")
495 1 5 if not $ce or $ce->is_empty
498 0 5 if $encodings->is_empty
512 7 13 unless $ent->is_encoded
514 12 1 if ($ce)
529 1 19 $opts->{'raise_error'} ? :
530 20 0 scalar keys %$opts ? :
531 1 18 unless defined $body
533 0 18 unless ($body)
539 0 0 $opts->{'ref'} ? :
0 18 if $body->is_empty
540 11 7 unless ($opts->{'binmode'})
545 8 3 if $enc
552 15 0 if (exists $opts->{'binmode'} and length $opts->{'binmode'} and lc substr($opts->{'binmode'}, 0, 3) eq "utf")
559 18 0 scalar keys %$opts ? :
560 0 18 unless (defined $content)
564 15 3 if (defined $binmode)
566 0 15 unless $self->_load_class("Encode")
573 0 15 if ($@)
580 2 16 if ($self->headers->content_is_xml)
584 2 0 if ($$content =~ /^(?<decl>[[:blank:]\h\v]*<\?xml(.*?)\?>)/is)
604 0 0 if ($self->headers->content_is_xml)
609 0 0 if ($$data =~ /^(\s*<\?xml[^\x00]*?\?>)/)
624 11 0 unless defined $maxlen
626 7 4 unless defined $no_content
627 4 7 if ($ent and $ent->body)
632 0 4 unless defined $bytes
636 4 7 if (length $content) { }
638 0 4 if ($ent->body->length > $maxlen)
657 1 3 if ($content eq $no_content)
669 4 7 if $opts->{'preheader'}
671 0 11 if $chopped
674 2 9 if $opts->{'prefix'}
676 2 9 unless defined wantarray
687 1 8 if $self->content_type =~ m[^multipart/]
688 1 7 if $self->content_type =~ m[^message/]
693 6 1 if (@enc) { }
703 1 6 if not $encodings or $encodings->is_empty
708 5 0 if ($opts->{'update_header'})
710 5 0 if ($source eq "argv")
712 2 3 if ($e) { }
732 117 291 if (@_)
736 3 288 if ($self->_is_a($self->{'entity'}, "HTTP::Promise::Entity") and not $self->{'entity'}{'http_message'})
749 11 365 if (@_) { }
0 365 elsif (not $self->{'headers'}) { }
752 11 0 if ($self->_is_a($v, 'HTTP::Promise::Headers')) { }
0 0 elsif ($self->_is_a($v, 'HTTP::Headers')) { }
0 0 elsif ($self->_is_array($v)) { }
783 0 2 unless defined $enc and length $enc
784 0 2 unless $self->_load_class("HTTP::Promise::Stream")
800 0 12 unless defined $str
802 0 12 if not exists $opts->{'debug'} and ref $self
804 1 11 unless (length "$str")
808 11 0 unless ref $self
809 0 11 unless $self->_load_class("HTTP::Promise::Parser")
815 8 3 unless (defined $ent)
821 3 0 unless ($msg)
838 2 12 if ($ent and $ent->parts->is_empty and $ent->body and not $ent->body->is_empty) { }
1 14 elsif ($ent and $ent->parts->is_empty and $ent->body and $ent->body->is_empty) { }
843 0 2 unless $self->_make_parts
853 0 14 unless ($ent)
855 0 0 unless $self->_load_class("HTTP::Promise::Entity")
862 5 9 if (@_)
864 2 6 $self->_is_array($_) ? :
866 1 4 if ($ct =~ m[^message/]) { }
2 2 elsif (not $ct =~ m[^multipart/]) { }
868 1 0 if @parts > 1
876 0 4 unless $self->_load_class("HTTP::Promise::Entity")
881 5 0 unless ($self->_is_a($_, "HTTP::Promise::Entity"))
883 0 5 unless $self->_is_a($_, "HTTP::Promise::Message")
885 0 5 unless ($ent)
905 14 26 if (@_)
909 14 0 if ($v =~ /^$HTTP::Promise::Message::HTTP_VERSION$/) { }
940 0 2 unless defined $type and length $type
943 0 2 unless $body
944 0 2 if ($toptype eq 'multipart') { }
2 0 elsif ($type eq 'message/http') { }
0 0 elsif ($toptype eq 'message') { }
949 0 0 unless $self->_load_class("HTTP::Promise::IO")
952 0 0 unless $self->_load_class("HTTP::Promise::Parser")
970 0 2 unless $self->_load_class("HTTP::Promise::IO")
977 0 2 unless defined $buff
978 0 2 unless $self->_load_class("HTTP::Promise::Parser")
981 0 2 if not $def and warnings::enabled()
982 0 2 unless defined $def
987 2 0 if ($def)
991 1 1 if ($def->{'type'} eq 'request') { }
1 0 elsif ($def->{'type'} eq 'response') { }
993 0 1 unless $self->_load_class("HTTP::Promise::Request")
998 0 1 unless $self->_load_class("HTTP::Promise::Response")
1028 0 0 unless $self->_utf8_downgrade($_[0])
1030 0 0 unless not $self->entity or $_[1]
1041 49 0 if (defined &utf8::downgrade)
1046 0 49 if ($@)
1050 3 46 unless $rv
1057 10 3 if $code
1078 0 3 scalar @args == 1 && ref $args[0] eq 'ARRAY' ? :
1079 3 0 defined $ref && ref $ref eq 'ARRAY' && scalar @$ref > 1 ? :
1080 3 0 ref $ref eq 'ARRAY' ? :
1083 3 0 if (ref $self) { }
1091 3 0 if (exists $self->{'headers'} and defined $self->{'headers'} and ref $self->{'headers'} and $self->{'headers'}->isa("HTTP::Promise::Headers"))
1099 3 0 if (exists $self->{'entity'} and exists $self->{'entity'}{'headers'})