Condition Coverage

blib/lib/Template/Alloy.pm
Criterion Covered Total %
condition 228 337 67.6


and 3 conditions

line !l l&&!r l&&r condition
54 0 2 41 $AUTOLOAD && $AUTOLOAD =~ /::(\w+)$/
82 3 4 0 $INC{$file} and $item->isa('Template::Alloy')
134 0 0 0 $err->type eq 'return' and UNIVERSAL::isa($err->info, 'HASH')
159 12 4967 194 not $$self{'RECURSION'} and $$self{'_in'}{$$doc{'name'}}
4979 188 6 not $$self{'RECURSION'} and $$self{'_in'}{$$doc{'name'}} and $$doc{'name'} ne 'input text'
191 176 0 201 $doc and $err->can('doc')
176 40 161 $doc and $err->can('doc') and not $err->doc
193 26 247 0 $err->type ne 'stop' and $err->type ne 'return' || $err->info
217 61 130 2 not $$doc{'_perl'} and $$self{'COMPILE_PERL'}
234 6 12 1 not $$doc{'_perl'} and $$self{'COMPILE_PERL'}
255 1 3 229 $$block{'name'} && $$block{'name'} ne 'input text'
273 53 0 18 $$self{'EXPOSE_BLOCKS'} and not $$self{'_looking_in_block_file'}
287 8 0 4 $$ref{'_perl'} and $$ref{'_perl'}{'blocks'}
8 0 4 $$ref{'_perl'} and $$ref{'_perl'}{'blocks'} and $$ref{'_perl'}{'blocks'}{$block_name}
292 12 0 0 $$self{'COMPILE_JS'} and $$ref{'_js'}
314 2 3108 1744 not $$doc{'_no_perl'} and $$self{'COMPILE_PERL'}
3110 1744 0 not $$doc{'_no_perl'} and $$self{'COMPILE_PERL'} and $$self{'COMPILE_PERL'} ne '2' || $$self{'_tree'}
350 4576 0 1 ref $self && $$self{'ENCODING'} && eval { do { require Encode } } && defined &Encode::encode
375 15 1 0 -e $file and $$doc{'_is_str_ref'} || (stat $file)[9] == $$doc{'modtime'}
428 8489 437 192 wantarray and $$name[1] eq '..'
433 0 171 3 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
434 60 111 0 $i >= $#$var and $$ARGS{'return_ref'}
171 0 0 $i >= $#$var and $$ARGS{'return_ref'} and not ref $$self{'_vars'}{$name}
439 526 9103 15 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
440 2555 7053 21 $i >= $#$var and $$ARGS{'return_ref'}
9608 15 6 $i >= $#$var and $$ARGS{'return_ref'} and not ref $$self{'_vars'}{$name}
444 202 671 0 not $ref and !defined($$self{'VMETHOD_FUNCTIONS'}) || $$self{'VMETHOD_FUNCTIONS'}
445 238 576 59 not defined $ref and $$self{'LOWER_CASE_VAR_FALLBACK'}
454 27 505 15 $i >= $#$var and $$ARGS{'return_ref'}
484 0 60 0 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
492 38 3412 3 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
513 0 18 9 @$filter == 2 and UNIVERSAL::isa($$filter[0], 'CODE')
527 6 0 0 not $sub and $err
547 18 18 0 scalar keys %seen_filters and $seen_filters{$$var[$i - 5] or ''}
558 12 1654 845 $was_dot_call and UNIVERSAL::can($ref, 'can')
559 40 805 0 $i >= $#$var and $$ARGS{'return_ref'}
586 6 294 756 $was_dot_call and exists $$ref{$name}
587 152 592 12 $i >= $#$var and $$ARGS{'return_ref'}
744 0 12 $i >= $#$var and $$ARGS{'return_ref'} and not ref $$ref{$name}
594 3 117 3 $i >= $#$var and $$ARGS{'return_ref'}
600 12 137 6 $i >= $#$var and $$ARGS{'return_ref'}
149 0 6 $i >= $#$var and $$ARGS{'return_ref'} and not ref $$ref[$name]
636 0 6 0 $$ref[1] and $$ref[1] =~ /^[\$\@]\(\)$/
641 0 12 0 $QR_PRIVATE && $ref =~ /$QR_PRIVATE/
0 0 12 defined $ref and not $QR_PRIVATE && $ref =~ /$QR_PRIVATE/
652 43 6019 3 $QR_PRIVATE and $ref =~ /$QR_PRIVATE/
699 0 256 0 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
788 499 0 60 $$self{'ADD_LOCAL_PATH'} and $$self{'_component'}
499 0 60 $$self{'ADD_LOCAL_PATH'} and $$self{'_component'} and $$self{'_component'}{'_filename'}
0 0 60 $$self{'ADD_LOCAL_PATH'} and $$self{'_component'} and $$self{'_component'}{'_filename'} and $$self{'_component'}{'_filename'} =~ m[^(.+)/[^/]+$]
817 0 521 0 $delim eq ':' && $^O eq 'MSWin32'
1001 184 6 3 exists $ARGS{'STRICT'} and not $ARGS{'STRICT'}

or 2 conditions

line l !l condition
122 772 1 shift() || die('Missing input')
123 771 1 shift() || die('Missing variable hash')
148 5344 6 shift() || {}
278 12 0 eval { do { $self->load_template($file) } } || (next)
370 2 0 $self->include_paths->[0] || '.'
387 0 33 $$self{'CONSTANT_NAMESPACE'} || 'constants'
419 105 18831 shift() || {}
456 81 451 $$self{'CALL_CONTEXT'} || ''
547 18 0 $$var[$i - 5] or ''
560 48 797 $$self{'CALL_CONTEXT'} || ''
623 3 6080 $ARGS ||= {}
645 0 6 $$self{'_vars'}{$ref} ||= {}
656 113 69 $$self{'_vars'}{$ref} ||= {}
664 3 3 $$self{'CALL_CONTEXT'} || ''
710 6 43 $$self{'CALL_CONTEXT'} || ''
746 16 31 $$ref{$name} ||= {}
755 6 0 $$ref[$name] ||= {}
774 332 0 $$self{'_vars'} ||= {}
806 404 22 $$self{'INCLUDE_PATH'} || ['.']
816 0 521 $$self{'DELIMITER'} || ':'
847 0 100 @$info >= 2 or scalar keys %$hash
898 9 0 eval { do { require Template::Filters; $Template::Filters::FILTERS } } || {}
903 10 6 $$self{'_debug_format'} || $$self{'DEBUG_FORMAT'} || "\n## \$file line \$line : [% \$text %] ##\n"
912 102 0 $$node[2] || (return '')
992 60 163 shift() || {}
994 102 121 $$self{'_eval_recurse'} || 0

or 3 conditions

line l !l&&r !l&&!r condition
89 1 0 1 $$ROLEMAP{$item} || do { require Carp; Carp::croak(qq[Invalid import option "$item"]) }
6 63 0 $type ||= $$AUTOROLE{$item} ? $item : $$ROLEMAP{$item} || do { require Carp; Carp::croak(qq[Invalid import option "$item"]) }
124 770 0 1 shift() || ($$self{'STREAM'} ? \'' : die('Missing output string ref'))
149 5349 1 0 shift() || $self->throw('undef', 'Missing output ref')
193 235 0 12 $err->type ne 'return' || $err->info
205 14 0 5366 $$self{'GLOBAL_CACHE'} || ($$self{'_documents'} ||= {})
213 4577 0 3 not defined $$self{'CACHE_STR_REFS'} or $$self{'CACHE_STR_REFS'}
232 0 0 19 $$self{'STAT_TTL'} || $STAT_TTL
19 0 0 time - $$doc{'cache_time'} < ($$self{'STAT_TTL'} || $STAT_TTL) or $$doc{'modtime'} == (stat $$doc{'_filename'})[9]
242 9 0 4 $$self{'NEGATIVE_STAT_TTL'} || $$self{'STAT_TTL'} || $STAT_TTL
253 2 0 1 eval { do { $self->load_template(\$block) } } || $self->throw('block', 'Parse error on predefined block')
268 4384 0 541 $$doc{'_filename'} or ref $file
301 50 9 0 not defined $$self{'NEGATIVE_STAT_TTL'} or $$self{'NEGATIVE_STAT_TTL'}
314 1742 0 2 $$self{'COMPILE_PERL'} ne '2' || $$self{'_tree'}
323 4469 0 252 not defined $$self{'CACHE_SIZE'} or $$self{'CACHE_SIZE'}
328 0 445 0 $$docs{$file} ||= $doc
363 4547 303 0 $$doc{'modtime'} ||= (stat $$doc{'_filename'})[9]
364 8 8 4834 $$self{'COMPILE_DIR'} or $$self{'COMPILE_EXT'}
375 0 1 0 $$doc{'_is_str_ref'} || (stat $file)[9] == $$doc{'modtime'}
384 4387 465 0 $$doc{'_content'} ||= $self->slurp($$doc{'_filename'})
388 0 33 0 $$self{'NAMESPACE'}{$key} ||= $$self{'CONSTANTS'}
393 4719 0 133 eval { do { $self->parse_tree($$doc{'_content'}) } } || do { my $e = $@; $e->doc($doc) if UNIVERSAL::can($e, 'doc') and not $e->doc; die $e }
443 136 39 698 $name eq 'template' || $name eq 'component'
444 0 36 629 $$Template::Alloy::ITEM_METHODS{$name} || $$Template::Alloy::ITEM_OPS{$name}
662 3 6 !defined($$self{'VMETHOD_FUNCTIONS'}) || $$self{'VMETHOD_FUNCTIONS'}
484 0 0 60 not defined $name or $QR_PRIVATE and $name =~ /$QR_PRIVATE/
0 0 60 not defined $name or $QR_PRIVATE and $name =~ /$QR_PRIVATE/ or $name =~ /^\./
492 0 0 3453 not defined $name or $QR_PRIVATE and $name =~ /$QR_PRIVATE/
499 6 3 6 $$self{'FILTERS'}{$name} || $$Template::Alloy::FILTER_OPS{$name} || UNIVERSAL::isa($name, 'CODE') && $name || $self->list_filters->{$name}
572 4 0 9 ref $@ or not $@ =~ /Can\'t locate object method "\Q$name\E" via package "\Q$class\E"/
4 0 9 ref $@ or not $@ =~ /Can\'t locate object method "\Q$name\E" via package "\Q$class\E"/ or $type eq 'list'
692 0 0 18 not defined $name or $name =~ /^[_.]/
738 4 0 0 ref $@ or not $@ =~ /Can\'t locate object method "\Q$name\E" via package "\Q$class\E"/
804 136 426 0 $$self{'INCLUDE_PATHS'} ||= do { my $paths = $$self{'INCLUDE_PATH'} || ['.']; $paths = &$paths() if UNIVERSAL::isa($paths, 'CODE'); $paths = $self->split_paths($paths) unless UNIVERSAL::isa($paths, 'ARRAY'); $paths }
828 0 0 3 $@ or not defined &Encode::decode
898 0 9 0 (shift())->{'_filters'} ||= eval { do { require Template::Filters; $Template::Filters::FILTERS } } || {}
914 102 0 0 $$doc{'_filename'} or $$doc{'_content'}
918 99 3 0 $$doc{'_content'} ||= $self->slurp($$doc{'_filename'})
931 0 0 3924 not $index or $index <= 0
935 2244 1680 0 $$doc{'_line_offsets'} ||= do { $$doc{'_content'} ||= $self->slurp($$doc{'_filename'}); my $i = 0; my(@lines) = 0; while (1) { $i = index(${$$doc{'_content'};}, "\n", $i) + 1; last if $i == 0; push @lines, $i; } ; \@lines }
936 1680 0 0 $$doc{'_content'} ||= $self->slurp($$doc{'_filename'})
976 0 3 0 $ident eq '0' or $ident =~ /^[1-9]\d{0,12}$/
995 132 0 91 $$self{'MAX_EVAL_RECURSE'} || $MAX_EVAL_RECURSE