Branch Coverage

blib/lib/Apache2/Expression.pm
Criterion Covered Total %
branch 118 232 50.8


line true false branch
40 0 247 unless length $data
42 77 170 if (@_)
44 77 0 !(@_ % 2) ? :
0 77 ref $_[0] eq 'HASH' ? :
51 0 0 $self->trunk ? :
247 0 $self->legacy ? :
55 71 176 if $callinfo[0] ne ref $self or $callinfo[0] eq ref $self and substr((caller 1)[3], rindex((caller 1)[3], ':') + 1) ne 'parse'
59 77 0 if (ref $opts->{'skip'} eq 'ARRAY' and scalar @{$opts->{'skip'};})
77 223 247 if pos $data == length $data
79 0 247 if ($data =~ /\G\r?\n$/) { }
36 211 elsif ($self->message(3, 'Trying with legacy variable.') and $data =~ /\A\G$RE{'Apache2'}{'LegacyVariable'}\Z/cgms and length $+{'variable'}) { }
48 163 elsif (not $skip->{'cond'} and $self->message(3, 'Trying with condition.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Cond"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Cond"}/cgms and length $+{'cond'}) { }
13 150 elsif ($self->message(3, 'Trying with string comparison.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}StringComp"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}StringComp"}/cgms and length $+{'stringcomp'}) { }
3 147 elsif ($self->message(3, 'Trying with integer comparison.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}IntegerComp"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}IntegerComp"}/cgms and length $+{'integercomp'}) { }
24 123 elsif ($self->message(3, 'Trying with general comparison.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Comp"}\Z/gms || $pos > 0 && $data =~ /\G$RE{'Apache2'}{"${prefix}Comp"}/cgms and length $+{'comp'}) { }
0 123 elsif ($self->message(3, 'Trying with trunk join.') and $prefix eq 'Trunk' and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Join"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Join"}/cgms and length $+{'join'}) { }
0 123 elsif ($self->message(3, 'Trying with trunk split.') and $prefix eq 'Trunk' and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Split"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Split"}/cgms and length $+{'split'}) { }
0 123 elsif ($self->message(3, 'Trying with legacy variable.') and $prefix eq 'Trunk' and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Sub"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Sub"}/cgms and length $+{'sub'}) { }
14 109 elsif ($self->message(3, 'Trying with function.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Function"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Function"}/cgms and length $+{'function'}) { }
0 109 elsif ($self->message(3, 'Trying with list function.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}ListFunc"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}ListFunc"}/cgms and length $+{'listfunc'}) { }
8 101 elsif ($self->message(3, 'Trying with regex.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Regexp"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Regexp"}/cgms and length $+{'regex'}) { }
0 101 elsif ($self->message(3, 'Trying with regex any.') and $prefix eq 'Trunk' and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Regany"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Regany"}/cgms and length $+{'regany'}) { }
0 101 elsif ($self->message(3, 'Trying with regsub.') and $prefix eq 'Trunk' and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Regsub"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Regsub"}/cgms and length $+{'regsub'}) { }
44 57 elsif (not $skip->{'words'} and $self->message(3, 'Trying with words.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Words"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}Words"}/cgms and length $+{'words'}) { }
46 11 elsif ($self->message(3, 'Trying with word.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}Word"}\Z/gms || $pos > 0 && $data =~ /\G$RE{'Apache2'}{"${prefix}Word"}/cgms and length $+{'word'}) { }
11 0 elsif ($self->message(3, 'Trying with string.') and $pos == 0 && $data =~ /\A$RE{'Apache2'}{"${prefix}String"}\Z/gms || $data =~ /\G$RE{'Apache2'}{"${prefix}String"}/cgms and length $+{'string'}) { }
99 1 35 if (length $re->{'var_func_name'}) { }
34 1 elsif (length $re->{'varname'}) { }
1 0 elsif (length $re->{'rebackref'}) { }
104 1 0 if (length $def->{'args'})
145 7 41 if $re->{'cond_neg'}
146 7 0 if $re->{'cond_neg'} and $opts->{'top'}
147 0 48 if (length $re->{'cond_variable'}) { }
1 47 elsif (length $re->{'cond_parenthesis'}) { }
7 40 elsif (length $re->{'cond_neg'}) { }
1 39 elsif (length $re->{'cond_and'} or length $re->{'cond_or'}) { }
30 9 elsif (length $re->{'cond_comp'}) { }
9 0 elsif (length $re->{'cond_true'} or length $re->{'cond_false'}) { }
152 0 0 unless ($re->{'cond_variable'} eq $data)
163 1 0 unless ($re->{'cond_parenthesis'} eq $data)
174 7 0 if (length $re->{'cond_expr'})
183 0 1 length $re->{'cond_and'} ? :
185 0 1 length $re->{'cond_and_expr1'} ? :
186 0 1 length $re->{'cond_and_expr2'} ? :
207 5 4 length $re->{'cond_true'} ? :
208 5 4 length $re->{'cond_true'} ? :
209 5 4 length $re->{'cond_true'} ? :
216 48 0 if length $re->{'cond'}
239 13 0 if (length $def->{'worda'})
245 13 0 if (length $def->{'wordb'})
272 3 0 if (length $re->{'integercomp_worda'})
278 3 0 if (length $re->{'integercomp_wordb'})
316 12 12 if (length $re->{'comp_unary'}) { }
4 8 elsif (length $re->{'comp_binary'}) { }
2 6 elsif (length $re->{'comp_word_in_listfunc'}) { }
6 0 elsif (length $re->{'comp_in_regexp'} or length $re->{'comp_in_regexp_legacy'}) { }
0 0 elsif (length $re->{'comp_word_in_list'}) { }
323 12 0 if (length $def->{'word'})
335 1 0 length $re->{'comp_binary_is_neg'} > 0 ? :
1 3 defined $re->{'comp_binary_is_neg'} ? :
340 4 0 if (length $def->{'worda'})
346 4 0 if (length $def->{'wordb'})
361 2 0 if (length $def->{'word'})
382 6 0 if (length $str)
388 6 0 if (length $def->{'regexp'})
403 0 0 if (length $def->{'word'})
409 0 0 if (length $def->{'list'})
424 0 0 if (defined $this and scalar keys %$this)
428 24 0 if length $re->{'comp'}
429 24 0 if $cur_pos == length $data and $self->message(3, 'End of string (', length $data, ' bytes long) reached at pos ', $cur_pos)
453 0 0 if (length $def->{'word'})
459 0 0 if (length $def->{'list'})
493 0 0 if (length $def->{'word'})
499 0 0 if (length $def->{'list'})
531 0 0 if (length $def->{'word'})
537 0 0 if (length $def->{'regsub'})
563 14 0 if (length $def->{'args'})
594 0 0 if (length $def->{'args'})
692 1 43 if (length $re->{'words_list'}) { }
708 0 2 unless exists $re2->{'words_word'}
709 1 1 unless exists $re2->{'words_sublist'}
713 1 1 if $re2->{'words_sublist'}
742 2 44 if (length $re->{'word_digits'}) { }
5 39 elsif (length $re->{'word_ip'}) { }
39 0 elsif (length $re->{'word_quote'} or length $re->{'word_parens_open'}) { }
0 0 elsif (length $re->{'word_function'} or length $re->{'word_variable'}) { }
0 0 elsif (length $re->{'word_join'}) { }
0 0 elsif (length $re->{'word_sub'}) { }
0 0 elsif (length $re->{'word_variable'}) { }
0 0 elsif (length $re->{'word_dot_word'}) { }
0 0 elsif (length $re->{'rebackref'}) { }
0 0 elsif (length $re->{'regex'}) { }
751 5 0 length $re->{'word_ip4'} ? :
752 5 0 length $re->{'word_ip4'} ? :
757 39 0 if (length $re->{'word_quote'}) { }
0 0 elsif (length $re->{'word_parens_open'}) { }
777 0 0 length $chunk ? :
778 0 0 length $re->{'word_variable'} ? :
0 0 length $re->{'word_function'} ? :
779 0 0 if (defined $this and scalar keys %$this)
782 0 0 if ($def->{'subtype'} eq 'function') { }
0 0 elsif ($def->{'subtype'} eq 'variable') { }
856 0 0 if ++$looping > 1
858 0 0 if ($opts->{'top'})
872 247 0 scalar @$elems ? :
884 0 15 unless scalar @{$doc->{'children'};}
885 0 15 if ($doc->elements)[0]->class ne 'PPI::Statement'
905 21 12 if ($e->class eq 'PPI::Token::ArrayIndex' or $e->isa('PPI::Token::Number') or $e->class eq 'PPI::Token::Operator' and not exists $$op_skip{$e->content} or $e->isa('PPI::Token::Quote') or $e->isa('PPI::Token::QuoteLike') or $e->isa('PPI::Token::Regexp') or $e->isa('PPI::Token::Symbol') or $e->class eq 'PPI::Token::Word') { }
6 6 elsif ($e->class eq 'PPI::Token::Operator' and $e->content eq ',') { }
0 6 elsif ($e->class eq 'PPI::Structure::List') { }
926 6 0 $i - 1 >= 0 ? :
6 0 $i + 1 <= scalar @elems ? :
932 0 0 if (ref $elems[$i - 1] and $elems[$i - 1]->class eq 'PPI::Token::Word' and $argv->[-1][0]->class eq 'PPI::Token::Word') { }
0 0 elsif (scalar $e->elements and ref(($e->elements)[0]) and @expr = $self->_find_expression($e) and $expr[0]->class eq 'PPI::Statement::Expression') { }
973 49 198 if $pos < $lookback
1003 0 0 if ($elems[$i]->class eq 'PPI::Token::Whitespace')