Condition Coverage

blib/lib/Web/Dispatch/ParamParser.pm
Criterion Covered Total %
condition 19 34 55.8


and 3 conditions

line !l l&&!r l&&r condition
144 4 0 0 $read == 0 and $spin++ > 2000

or 2 conditions

line l !l condition
22 12 1 $_[0]{'CONTENT_TYPE'} || ''
47 6 0 $_[0]{'CONTENT_TYPE'} || ''
68 0 1 $final->{$k} ||= []
80 0 5 $final->{$k} ||= []
112 302 551 $unpack{$name} ||= []

or 3 conditions

line l !l&&r !l&&!r condition
15 67 0 34 $_[0]{'Web::Dispatch.original_env'} || $_[0]
0 101 0 ($_[0]{'Web::Dispatch.original_env'} || $_[0])->{'Web::Dispatch::ParamParser.unpacked_query'} ||= do { _unpack_params($_[0]{'QUERY_STRING'}) }
21 8 0 18 $_[0]{'Web::Dispatch.original_env'} || $_[0]
13 13 0 ($_[0]{'Web::Dispatch.original_env'} || $_[0])->{'Web::Dispatch::ParamParser.unpacked_body'} ||= do { my $ct = lc($_[0]{'CONTENT_TYPE'} || ''); if (not $_[0]{'CONTENT_LENGTH'}) { +{}; } elsif (index($ct, 'application/x-www-form-urlencoded') >= 0) { $_[0]{'psgi.input'}->read(my $buf, $_[0]{'CONTENT_LENGTH'}); _unpack_params($buf); } elsif (index($ct, 'multipart/form-data') >= 0) { my $p = get_unpacked_body_object_from($_[0])->param; +{map((ref $p->{$_} eq 'ARRAY' ? ($_, $p->{$_}) : ($_, [$p->{$_}])), keys %$p)}; } else { +{}; } }
46 0 0 12 $_[0]{'Web::Dispatch.original_env'} || $_[0]
4 8 0 ($_[0]{'Web::Dispatch.original_env'} || $_[0])->{'Web::Dispatch::ParamParser.unpacked_body_object'} ||= do { if (not $_[0]{'CONTENT_LENGTH'}) { [undef]; } elsif (index(lc($_[0]{'CONTENT_TYPE'} || ''), 'multipart/form-data') == -1) { [undef]; } else { [_make_http_body($_[0])]; } }
58 0 7 0 $_[0]{'Web::Dispatch::ParamParser.unpacked_uploads'} ||= do { require Web::Dispatch::Upload; require HTTP::Headers; my($final, $reason) = ({}, 'field %s exists with value %s but body was not multipart/form-data'); if (my $body = get_unpacked_body_object_from($_[0])) { my $u = $body->upload; $reason = 'field %s exists with value %s but was not an upload'; foreach my $k (keys %$u) { foreach my $v (ref $u->{$k} eq 'ARRAY' ? @{$$u{$k};} : $u->{$k}) { push @{$final->{$k} ||= [];}, 'Web::Dispatch::Upload'->new(%{$v;}, 'headers', 'HTTP::Headers'->new($v->{'headers'})); } ; } ; } ; my $b = get_unpacked_body_from($_[0]); foreach my $k (keys %$b) { next if $final->{$k}; foreach my $v (@{$$b{$k};}) { next unless $v; push @{$final->{$k} ||= [];}, 'Web::Dispatch::NotAnUpload'->new('filename', $v, 'reason', sprintf($reason, $k, $v)); } ; } ; $final }