Branch Coverage

blib/lib/DNS/ZoneParse.pm
Criterion Covered Total %
branch 202 254 79.5


line true false branch
38 12 0 if (ref $unparseable_callback eq 'CODE')
43 12 0 if $file
50 0 0 if (not defined $arg) { }
0 0 elsif (ref $arg eq 'CODE') { }
95 0 0 $method eq 'origin' ? :
0 0 $method eq 'zonefile' ? :
3 0 $method eq 'generate' ? :
3 3 $method eq 'loc' ? :
3 6 $method eq 'rp' ? :
3 9 $method eq 'hinfo' ? :
3 12 $method eq 'srv' ? :
3 15 $method eq 'aaaa' ? :
0 18 $method eq 'ptr' ? :
3 18 $method eq 'txt' ? :
3 21 $method eq 'mx' ? :
3 24 $method eq 'cname' ? :
9 27 $method eq 'a' ? :
11 36 $method eq 'ns' ? :
31 47 $method eq 'soa' ? :
113 0 78 unless defined $rv
144 3 3 if ($incriment > 0) { }
148 2 1 $newserial > $$soa{'serial'} ? :
158 5 0 $dns_soa{$self}{'ttl'} ? :
167 3 2 if ($dns_soa{$self}{'ORIGIN'} ne $dns_soa{$self}{'origin'})
188 5 2 if ($_ eq $dns_soa{$self}{'ORIGIN'}) { }
197 2 5 if ($process_this_origin ne $dns_soa{$self}{'ORIGIN'})
203 0 14 unless defined $o
204 4 10 unless $$o{'ORIGIN'} eq $process_this_origin
210 0 6 unless defined $o
211 4 2 unless $$o{'ORIGIN'} eq $process_this_origin
217 0 27 unless defined $o
218 18 9 unless $$o{'ORIGIN'} eq $process_this_origin
223 0 6 unless defined $o
224 4 2 unless $$o{'ORIGIN'} eq $process_this_origin
229 0 3 unless defined $o
230 2 1 unless $$o{'ORIGIN'} eq $process_this_origin
235 0 21 unless defined $o
236 14 7 unless $$o{'ORIGIN'} eq $process_this_origin
241 0 0 unless defined $o
242 0 0 unless $$o{'ORIGIN'} eq $process_this_origin
247 0 6 unless defined $o
248 4 2 unless $$o{'ORIGIN'} eq $process_this_origin
253 0 114 unless defined $o
254 76 38 unless $$o{'ORIGIN'} eq $process_this_origin
259 0 3 unless defined $o
260 2 1 unless $$o{'ORIGIN'} eq $process_this_origin
265 0 18 unless defined $o
266 12 6 unless $$o{'ORIGIN'} eq $process_this_origin
273 0 3 unless defined $o
274 2 1 unless $$o{'ORIGIN'} eq $process_this_origin
288 3 6 if ($$record_ref{'origin'}) { }
289 3 0 if ($$record_ref{'origin'} eq '@' or $$record_ref{'origin'} =~ /\.$/) { }
292 0 0 if ($$record_ref{'ORIGIN'} =~ /^\./)
298 3 3 if ($$record_ref{'name'} eq '@') { }
301 0 3 if ($$record_ref{'ORIGIN'} =~ /^\./)
313 1 15 unless ($t)
318 1 14 if ($t =~ /^\d+$/)
324 0 14 unless ($t =~ /^(?:\d+[WDHMS])+$/i)
333 0 32 if (defined $ttl{$2})
338 38 32 unless (exists $ttl{$m})
347 0 14 unless $r == $ttl{'S'} + 60 * ($ttl{'M'} + 60 * ($ttl{'H'} + 24 * ($ttl{'D'} + 7 * $ttl{'W'})))
383 11 1 if (ref $zonefile eq 'SCALAR') { }
387 1 0 if (open $inZONE, '<', $zonefile) { }
395 12 0 if ($self->_parse($zonefile, $zone_contents, $origin))
409 11 1 if (ref $zonefile eq 'SCALAR')
411 12 0 unless ($origin and $zonefile)
416 6 4 if (not $origin and $3)
417 6 5 if (not $zonefile and $1)
420 7 5 if ($zonefile) { }
426 8 4 if ($origin) { }
465 110 269 if /^\s*$/
472 57 212 if (/^($valid_name)? \s+ # host $ttl_cls # ttl & class ($rr_type) \s # record type ($valid_name) # record data /iox) { }
3 209 elsif (/^($valid_name)? \s+ $ttl_cls AAAA \s ($valid_ip6) /iox) { }
6 203 elsif (/^($valid_name)? \s+ $ttl_cls MX \s+ (\d+) \s+ ($valid_name_char+) /iox) { }
6 197 elsif (/^($valid_name)? \s+ $ttl_cls SRV \s+ (\d+) \s+ (\d+) \s+ (\d+) \s+ ($valid_name) /iox) { }
12 185 elsif (/^($valid_name) \s+ $ttl_cls SOA \s+ ($valid_name) \s+ ($valid_name) \s+ ($rr_ttl) \s+ ($rr_ttl) \s+ ($rr_ttl) \s+ ($rr_ttl) \s+ ($rr_ttl) /iox) { }
0 185 elsif (/^($valid_name)? \s+ $ttl_cls PTR \s+ ($valid_name) /iox) { }
21 164 elsif (/($valid_name)? \s+ $ttl_cls TXT \s+ ("$valid_quoted_txt_char*(?
10 154 elsif (/^\s*\$TTL \s+ ($rr_ttl) /iox) { }
114 40 elsif (/^($valid_name)? \s+ $ttl_cls HINFO \s+ ("$valid_quoted_txt_char*(?
3 37 elsif (/^($valid_name)? \s+ $ttl_cls RP \s+ ($valid_name_char+) \s+ ($valid_name_char+) /iox) { }
18 19 elsif (/^($valid_name)? \s+ $ttl_cls LOC \s+ (-?[\d\.]+) \s* ([\d\.]*) \s* ([\d\.]*) \s+ ([NS]) \s+ (-?[\d\.]+) \s* ([\d\.]*) \s* ([\d\.]*) \s+ ([EW]) \s* (-?[\d\.]*m?) \s* ([\d\.]*m?) \s* ([\d\.]*m?) \s* ([\d\.]*m?) /iox) { }
12 7 elsif (/^\s*\$ORIGIN\s+($valid_name_char+)/io) { }
3 4 elsif (/^ \s* \$GENERATE \s+ ($generate_range) \s+ # range ($valid_name) \s+ # lhs (?:($rr_ttl) \s+)? # ttl (?:($rr_class) \s+)? # class ([a-z]+) \s+ # type ($valid_name) # rhs /iox) { }
481 27 6 uc $type eq 'A' ? :
24 33 uc $type eq 'NS' ? :
578 4 8 unless ($origin)
621 0 10 unless (defined $dns_soa{$self})
701 4 8 unless ($new_origin =~ /\.$/)
702 0 4 if ($dns_last_origin{$self} =~ /^\./) { }
736 4 265 if ($@) { }
739 4 0 if ($unparseable_line_callback{$self}) { }
771 10859 2443 if (not $in_comment) { }
2272 171 elsif ($c ne "\n") { }
772 10798 61 if (not $next_is_escaped) { }
773 230 10568 if ($c eq '"') { }
61 10507 elsif ($c eq '\\') { }
9660 847 elsif (not $in_quote) { }
778 171 9489 if ($c eq ';') { }
14 9475 elsif ($c eq '(') { }
14 18339 elsif ($in_concat and $c eq ')') { }
797 446 12856 if ($c eq "\n")
799 67 379 if ($in_concat)
805 12 13290 if ($x >= length $zone)
816 272 1117 unless (defined $$record{$r})
820 255 862 if (exists $possibly_quoted{$r})
821 115 140 if $$record{$r} =~ s/^"//
826 1102 15 if ($r ne 'email' and $r ne 'mbox')
830 0 49 if ($escape_char =~ /\d/) { }
833 0 0 if ($escape_char =~ /^\d{3}$/ and $escape_char <= 377) { }
848 0 243 if ($$record{'class'} =~ /$rr_class/ and $$record{'ttl'} =~ /$rr_class/ or $$record{'class'} =~ /$rr_ttl/ and $$record{'ttl'} =~ /$rr_ttl/)
856 38 205 if ($$record{'class'} =~ /$rr_ttl/ or $$record{'ttl'} =~ /$rr_class/)
862 133 110 if ($$record{'class'}) { }
877 12 231 if (exists $$record{'minimumTTL'}) { }
882 7 5 if ($$record{'ttl'}) { }
885 3 2 if ($dns_last_ttl{$self}) { }
892 5 7 if ($$record{'origin'} eq '@') { }
895 3 2 unless ($dns_last_origin{$self})
896 0 3 unless ($dns_id{$self}{'Origin'})
908 5 2 if ($new_origin =~ /\.$/)
911 5 0 unless ($dns_last_origin{$self})
926 228 3 unless (exists $$record{'lhs'})
927 212 16 if ($$record{'name'}) { }
931 0 16 unless ($dns_last_name{$self})
938 0 231 if (not $dns_last_origin{$self}) { }
945 90 141 if ($$record{'ttl'}) { }
948 0 141 unless (defined $dns_last_ttl{$self})