Condition Coverage

blib/lib/Template/Alloy.pm
Criterion Covered Total %
condition 232 337 68.8


and 3 conditions

line !l l&&!r l&&r condition
51 0 2 41 $AUTOLOAD && $AUTOLOAD =~ /::(\w+)$/
79 3 1 3 $INC{$file} and $item->isa('Template::Alloy')
131 0 0 0 $err->type eq 'return' and UNIVERSAL::isa($err->info, 'HASH')
157 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'
188 176 0 201 $doc and $err->can('doc')
176 40 161 $doc and $err->can('doc') and not $err->doc
190 26 247 0 $err->type ne 'stop' and $err->type ne 'return' || $err->info
214 61 130 2 not $doc->{'_perl'} and $self->{'COMPILE_PERL'}
231 6 12 1 not $doc->{'_perl'} and $self->{'COMPILE_PERL'}
252 1 3 229 $block->{'name'} && $block->{'name'} ne 'input text'
270 53 0 18 $self->{'EXPOSE_BLOCKS'} and not $self->{'_looking_in_block_file'}
288 8 0 4 $ref->{'_perl'} and $ref->{'_perl'}{'blocks'}
0 0 4 $ref->{'_perl'} and $ref->{'_perl'}{'blocks'} and $ref->{'_perl'}{'blocks'}{$block_name}
289 12 0 0 $self->{'COMPILE_JS'} and $ref->{'_js'}
311 2 3108 1744 not $doc->{'_no_perl'} and $self->{'COMPILE_PERL'}
3108 2 1742 not $doc->{'_no_perl'} and $self->{'COMPILE_PERL'} and $self->{'COMPILE_PERL'} ne '2' || $self->{'_tree'}
349 4576 0 1 ref $self && $self->{'ENCODING'} && eval { do { require Encode } } && defined &Encode::encode
372 15 0 1 -e $file and $doc->{'_is_str_ref'} || (stat $file)[9] == $doc->{'modtime'}
425 8489 437 192 wantarray and $name->[1] eq '..'
430 0 171 3 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
431 60 111 0 $i >= $#$var and $ARGS->{'return_ref'}
111 0 0 $i >= $#$var and $ARGS->{'return_ref'} and not ref $self->{'_vars'}{$name}
436 526 9103 15 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
437 2555 7053 21 $i >= $#$var and $ARGS->{'return_ref'}
7053 15 6 $i >= $#$var and $ARGS->{'return_ref'} and not ref $self->{'_vars'}{$name}
441 202 596 75 not $ref and !defined($self->{'VMETHOD_FUNCTIONS'}) || $self->{'VMETHOD_FUNCTIONS'}
442 238 576 59 not defined $ref and $self->{'LOWER_CASE_VAR_FALLBACK'}
451 27 505 15 $i >= $#$var and $ARGS->{'return_ref'}
481 0 60 0 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
489 38 3412 3 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
510 0 18 9 @$filter == 2 and UNIVERSAL::isa($filter->[0], 'CODE')
524 6 0 0 not $sub and $err
544 18 18 0 scalar keys %seen_filters and $seen_filters{$$var[$i - 5] or ''}
555 12 1654 845 $was_dot_call and UNIVERSAL::can($ref, 'can')
556 40 805 0 $i >= $#$var and $ARGS->{'return_ref'}
583 6 294 756 $was_dot_call and exists $ref->{$name}
584 152 592 12 $i >= $#$var and $ARGS->{'return_ref'}
592 0 12 $i >= $#$var and $ARGS->{'return_ref'} and not ref $ref->{$name}
591 3 117 3 $i >= $#$var and $ARGS->{'return_ref'}
597 12 137 6 $i >= $#$var and $ARGS->{'return_ref'}
137 0 6 $i >= $#$var and $ARGS->{'return_ref'} and not ref $ref->[$name]
635 0 0 6 $ref->[1] and $ref->[1] =~ /^[\$\@]\(\)$/
640 0 12 0 $QR_PRIVATE && $ref =~ /$QR_PRIVATE/
0 0 12 defined $ref and not $QR_PRIVATE && $ref =~ /$QR_PRIVATE/
651 43 6019 3 $QR_PRIVATE and $ref =~ /$QR_PRIVATE/
698 0 256 0 $QR_PRIVATE and $name =~ /$QR_PRIVATE/
787 499 0 60 $self->{'ADD_LOCAL_PATH'} and $self->{'_component'}
0 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[^(.+)/[^/]+$]
816 0 521 0 $delim eq ':' && $^O eq 'MSWin32'
1000 184 6 3 exists $ARGS{'STRICT'} and not $ARGS{'STRICT'}

or 2 conditions

line l !l condition
119 772 1 shift() || die('Missing input')
120 771 1 shift() || die('Missing variable hash')
145 5344 6 shift() || {}
275 12 0 eval { do { $self->load_template($file) } } || (next)
367 2 0 $self->include_paths->[0] || '.'
384 0 33 $self->{'CONSTANT_NAMESPACE'} || 'constants'
416 105 18831 shift() || {}
453 81 451 $self->{'CALL_CONTEXT'} || ''
544 18 0 $$var[$i - 5] or ''
557 48 797 $self->{'CALL_CONTEXT'} || ''
622 3 6080 $ARGS ||= {}
644 0 6 $self->{'_vars'}{$ref} ||= {}
655 113 69 $self->{'_vars'}{$ref} ||= {}
663 3 3 $self->{'CALL_CONTEXT'} || ''
709 6 43 $self->{'CALL_CONTEXT'} || ''
745 16 31 $ref->{$name} ||= {}
754 6 0 $ref->[$name] ||= {}
773 332 0 $self->{'_vars'} ||= {}
805 404 22 $self->{'INCLUDE_PATH'} || ['.']
815 0 521 $self->{'DELIMITER'} || ':'
846 0 100 @$info >= 2 or scalar keys %$hash
897 9 0 eval { do { require Template::Filters; $Template::Filters::FILTERS } } || {}
902 8 6 $self->{'_debug_format'} || $self->{'DEBUG_FORMAT'} || "\n## \$file line \$line : [% \$text %] ##\n"
911 102 0 $node->[2] || (return '')
991 60 163 shift() || {}
993 102 121 $self->{'_eval_recurse'} || 0

or 3 conditions

line l !l&&r !l&&!r condition
86 1 1 0 $ROLEMAP->{$item} || do { require Carp; Carp::croak(qq[Invalid import option "$item"]) }
6 63 0 $type ||= $Template::Alloy::AUTOROLE->{$item} ? $item : $ROLEMAP->{$item} || do { require Carp; Carp::croak(qq[Invalid import option "$item"]) }
121 770 1 0 shift() || ($self->{'STREAM'} ? \'' : die('Missing output string ref'))
146 5349 1 0 shift() || $self->throw('undef', 'Missing output ref')
190 235 0 12 $err->type ne 'return' || $err->info
202 14 5366 0 $self->{'GLOBAL_CACHE'} || ($self->{'_documents'} ||= {})
210 4577 0 3 not defined $self->{'CACHE_STR_REFS'} or $self->{'CACHE_STR_REFS'}
229 0 19 0 $self->{'STAT_TTL'} || $STAT_TTL
19 0 0 time - $doc->{'cache_time'} < ($self->{'STAT_TTL'} || $STAT_TTL) or $doc->{'modtime'} == (stat $doc->{'_filename'})[9]
239 3 4 0 $self->{'NEGATIVE_STAT_TTL'} || $self->{'STAT_TTL'} || $STAT_TTL
250 2 0 1 eval { do { $self->load_template(\$block) } } || $self->throw('block', 'Parse error on predefined block')
265 4384 3 538 $doc->{'_filename'} or ref $file
298 50 9 0 not defined $self->{'NEGATIVE_STAT_TTL'} or $self->{'NEGATIVE_STAT_TTL'}
311 1742 0 2 $self->{'COMPILE_PERL'} ne '2' || $self->{'_tree'}
320 4469 0 252 not defined $self->{'CACHE_SIZE'} or $self->{'CACHE_SIZE'}
325 0 445 0 $docs->{$file} ||= $doc
360 4547 303 0 $doc->{'modtime'} ||= (stat $doc->{'_filename'})[9]
361 8 8 4834 $self->{'COMPILE_DIR'} or $self->{'COMPILE_EXT'}
372 0 1 0 $doc->{'_is_str_ref'} || (stat $file)[9] == $doc->{'modtime'}
381 4387 465 0 $doc->{'_content'} ||= $self->slurp($doc->{'_filename'})
385 0 33 0 $self->{'NAMESPACE'}{$key} ||= $self->{'CONSTANTS'}
390 4719 132 1 eval { do { $self->parse_tree($doc->{'_content'}) } } || do { my $e = $@; $e->doc($doc) if UNIVERSAL::can($e, 'doc') and not $e->doc; die $e }
440 136 39 698 $name eq 'template' || $name eq 'component'
441 0 36 629 $Template::Alloy::ITEM_METHODS->{$name} || $Template::Alloy::ITEM_OPS->{$name}
662 3 6 !defined($self->{'VMETHOD_FUNCTIONS'}) || $self->{'VMETHOD_FUNCTIONS'}
481 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 =~ /^\./
489 0 3 3450 not defined $name or $QR_PRIVATE and $name =~ /$QR_PRIVATE/
496 6 3 6 $self->{'FILTERS'}{$name} || $Template::Alloy::FILTER_OPS->{$name} || UNIVERSAL::isa($name, 'CODE') && $name || $self->list_filters->{$name}
569 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'
691 0 0 18 not defined $name or $name =~ /^[_.]/
737 4 0 0 ref $@ or not $@ =~ /Can\'t locate object method "\Q$name\E" via package "\Q$class\E"/
803 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 }
827 0 0 3 $@ or not defined &Encode::decode
897 0 9 0 +(shift())->{'_filters'} ||= eval { do { require Template::Filters; $Template::Filters::FILTERS } } || {}
916 102 0 0 $doc->{'_filename'} or $doc->{'_content'}
917 99 3 0 $doc->{'_content'} ||= $self->slurp($doc->{'_filename'})
930 0 0 3924 not $index or $index <= 0
934 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 }
935 1680 0 0 $doc->{'_content'} ||= $self->slurp($doc->{'_filename'})
975 0 3 0 $ident eq '0' or $ident =~ /^[1-9]\d{0,12}$/
995 132 91 0 $self->{'MAX_EVAL_RECURSE'} || $MAX_EVAL_RECURSE