Branch Coverage

lib/Jinja2/TT2/Parser.pm
Criterion Covered Total %
branch 100 214 46.7


line true false branch
49 71 0 if $node
59 0 100 unless $token
61 27 73 if ($token->{'type'} eq "TEXT")
66 2 71 if ($token->{'type'} eq "COMMENT")
71 46 25 if ($token->{'type'} eq "VAR_START")
75 25 0 if ($token->{'type'} eq "STMT_START")
107 0 25 unless ($keyword and $keyword->{'type'} eq "NAME")
113 13 12 if ($kw eq 'if') { }
5 7 elsif ($kw eq 'for') { }
2 5 elsif ($kw eq 'block') { }
0 5 elsif ($kw eq 'extends') { }
2 3 elsif ($kw eq 'include') { }
0 3 elsif ($kw eq 'import') { }
0 3 elsif ($kw eq 'from') { }
2 1 elsif ($kw eq 'set') { }
1 0 elsif ($kw eq 'macro') { }
0 0 elsif ($kw eq 'call') { }
0 0 elsif ($kw eq 'filter') { }
0 0 elsif ($kw eq 'raw') { }
0 0 elsif ($kw eq 'with') { }
0 0 elsif ($kw eq 'autoescape') { }
0 0 elsif ($kw =~ /^(endif|endfor|endblock|endmacro|endcall|endfilter|endraw|endwith|endautoescape|elif|else)$/u) { }
161 2 34 if ($self->_is_stmt_keyword("elif"))
175 5 29 if ($self->_is_stmt_keyword("else"))
187 13 16 if ($self->_is_stmt_keyword("endif"))
196 16 0 if ($node)
197 7 9 if (@branches) { }
231 0 5 if (not $in_token or $in_token->{'type'} ne "OPERATOR" and $in_token->{'type'} ne "NAME" or $in_token->{'value'} ne "in")
241 0 5 if ($self->_check("NAME") and $self->_current->{'value'} eq "if")
248 0 5 if ($self->_check("NAME") and $self->_current->{'value'} eq "recursive")
260 0 14 if ($self->_is_stmt_keyword("else"))
268 5 9 if ($self->_is_stmt_keyword("endfor"))
276 9 0 if ($node)
277 0 9 if ($in_else) { }
305 0 2 if ($self->_check("NAME") and $self->_current->{'value'} eq "scoped")
314 2 2 if ($self->_is_stmt_keyword("endblock"))
318 0 2 if ($self->_check("NAME"))
326 2 0 if $node
361 0 2 if ($self->_check("NAME") and $self->_current->{'value'} eq "ignore")
363 0 0 if ($self->_check("NAME") and $self->_current->{'value'} eq "missing")
371 0 2 if ($self->_check("NAME"))
373 0 0 if ($ctx eq "with" or $ctx eq "without")
375 0 0 if ($self->_check("NAME") and $self->_current->{'value'} eq "context")
377 0 0 $ctx eq 'with' ? :
406 0 0 if ($self->_check("NAME"))
408 0 0 if ($ctx eq "with" or $ctx eq "without")
410 0 0 if ($self->_check("NAME") and $self->_current->{'value'} eq "context")
412 0 0 $ctx eq 'with' ? :
443 0 0 if ($self->_check("NAME") and $self->_current->{'value'} eq "as")
452 0 0 if ($self->_check("NAME"))
454 0 0 if ($ctx eq "with" or $ctx eq "without")
456 0 0 if ($self->_check("NAME") and $self->_current->{'value'} eq "context")
458 0 0 $ctx eq 'with' ? :
490 2 0 if ($self->_check('ASSIGN')) { }
508 0 0 if ($self->_is_stmt_keyword("endset"))
516 0 0 if $node
537 1 0 unless ($self->_check("RPAREN"))
541 0 1 if ($self->_check("ASSIGN"))
553 1 2 if ($self->_is_stmt_keyword("endmacro"))
561 2 0 if $node
580 0 0 if ($self->_check("LPAREN"))
582 0 0 unless ($self->_check("RPAREN"))
596 0 0 if ($self->_is_stmt_keyword("endcall"))
604 0 0 if $node
625 0 0 if ($self->_is_stmt_keyword("endfilter"))
633 0 0 if $node
654 0 0 if ($self->_is_stmt_keyword("endraw"))
680 0 0 unless ($self->_check("STMT_END"))
693 0 0 if ($self->_is_stmt_keyword("endwith"))
701 0 0 if $node
721 0 0 if ($self->_is_stmt_keyword("endautoescape"))
729 0 0 if $node
752 2 85 if ($self->_check("NAME") and $self->_current->{'value'} eq "if")
756 2 0 if ($self->_check('NAME') and $self->_current->{'value'} eq 'else') { }
810 1 93 if ($self->_check("OPERATOR") and $self->_current->{'value'} eq "not")
826 4 4 if ($op =~ /^(==|!=|<|>|<=|>=|in|is)$/u) { }
830 0 4 if ($op eq 'is' and $self->_check('OPERATOR') and $self->_current->{'value'} eq 'not') { }
0 4 elsif ($op eq 'not' and $self->_check('OPERATOR') and $self->_current->{'value'} eq 'in') { }
855 2 8 if ($op =~ /^[+\-~]$/u) { }
874 0 9 if ($op =~ m[^[*/%]$]u or $op eq '//' or $op eq '**') { }
889 0 99 if ($self->_check("OPERATOR") and $self->_current->{'value'} =~ /^[+\-]$/u)
909 2 12 if ($self->_check("LPAREN"))
911 2 0 unless ($self->_check("RPAREN"))
914 0 2 if ($self->_check('NAME') and $self->_peek and $self->_peek->{'type'} eq 'ASSIGN') { }
939 8 102 if ($self->_check('DOT')) { }
1 101 elsif ($self->_check('LBRACKET')) { }
2 99 elsif ($self->_check('LPAREN')) { }
952 2 0 unless ($self->_check("RPAREN"))
955 0 2 if ($self->_check('NAME') and $self->_peek and $self->_peek->{'type'} eq 'ASSIGN') { }
981 76 23 if ($token->{'type'} eq "NAME")
986 2 74 if ($name =~ /^(true|True)$/u) { }
2 72 elsif ($name =~ /^(false|False)$/u) { }
0 72 elsif ($name =~ /^(none|None)$/u) { }
998 13 10 if ($token->{'type'} eq "NUMBER")
1006 6 4 if ($token->{'type'} eq "STRING")
1019 0 4 if ($token->{'type'} eq "LPAREN")
1021 0 0 if ($self->_check("RPAREN"))
1028 0 0 if ($self->_check("COMMA"))
1033 0 0 if $self->_check("RPAREN")
1045 2 2 if ($token->{'type'} eq "LBRACKET")
1048 2 0 unless ($self->_check("RBRACKET"))
1058 2 0 if ($token->{'type'} eq "LBRACE")
1061 2 0 unless ($self->_check("RBRACE"))
1090 482 0 if $self->{'pos'} < @{$self->{'tokens'};}
1103 0 246 if (not $token or $token->{'type'} ne $type)
1113 0 0 if (not $token or $token->{'type'} ne "NAME" or $token->{'value'} ne $keyword)
1130 70 64 unless $token and $token->{'type'} eq "STMT_START"