Branch Coverage

blib/lib/Mail/SpamAssassin/Conf.pm
Criterion Covered Total %
branch 115 384 29.9


line true false branch
224 0 1265 unless (defined $value and not $value =~ /^$/ and scalar @scores == 1 || scalar @scores == 4)
234 9 1832 if (s/^\((-?\d+(?:\.\d+)?)\)$/$1/)
237 0 1841 unless (/^-?\d+(?:\.\d+)?$/)
244 0 1265 if ($relative and not exists $self->{'scoreset'}[0]{$rule})
251 1265 0 if (@scores)
252 1073 192 if (@scores != 4)
259 12 5048 $relative ? :
398 0 0 unless (defined $value and not $value =~ /^$/)
401 0 0 unless ($value =~ /^\S+\s+\S+$/)
414 0 0 unless (defined $value and not $value =~ /^$/)
417 0 0 unless ($value =~ /^\S+\s+\S+$/)
480 0 0 unless (defined $value and not $value =~ /^$/)
483 0 0 unless ($value =~ /^(?:\S+(?:\s+\S+)*)$/)
694 0 0 unless ($value =~ /^ \( (.*?) \) \s+ (.*) \z/sx)
701 0 0 $host =~ s/^!// ? :
732 0 0 unless ($value =~ /^ (?: \( (.*?) \) \s+ )? (.*) \z/sx)
735 0 0 defined $1 ? :
739 0 0 $host =~ s/^!// ? :
788 0 0 unless ($value =~ /^ \( (.*?) \) \s+ (.*) \z/sx)
813 0 0 $host =~ s/^!// ? :
834 0 0 $host =~ s/^!// ? :
878 0 0 if ($hdr =~ /^$/) { }
0 0 elsif ($hdr =~ /^(?:From|Subject|To)$/) { }
883 0 0 unless (defined $string and $string =~ /\S/)
888 0 0 if ($hdr ne 'Subject')
947 0 316 unless ($value =~ /^(ham|spam|all)\s+([A-Za-z0-9_-]+)\s+(.*?)\s*$/)
952 63 253 if ($hline =~ /^"(.*)"$/)
966 253 63 if ($type eq 'ham' or $type eq 'all')
971 316 0 if ($type eq 'spam' or $type eq 'all')
999 0 0 unless ($value =~ /^(ham|spam|all)\s+([A-Za-z0-9_-]+)\s*$/)
1004 0 0 if $name eq 'Checker-Version'
1007 0 0 if ($type eq 'ham' or $type eq 'all')
1011 0 0 if ($type eq 'spam' or $type eq 'all')
1041 0 63 unless (not defined $value or $value eq '')
1046 0 63 !@h ? :
1047 0 63 !@h ? :
1083 0 63 if ($value eq '') { }
0 63 elsif (not $value =~ /^[012]$/) { }
1091 0 63 if (not $self->{'report_safe'} || grep({lc $_->[0] eq 'report';} @{$$self{'headers_spam'};}))
1193 0 0 unless (defined $value and not $value =~ /^$/)
1196 0 0 if (lc $value eq 'yes' or $value eq '1') { }
0 0 elsif (lc $value eq 'no' or $value eq '0') { }
1202 0 0 unless ($] > 5.008004)
1209 0 0 unless (eval { do { 'HTML::Parser'->VERSION(3.46) } })
1214 0 0 unless (eval 'require Encode')
1326 0 32 unless (not defined $value or $value eq '')
1380 0 32 unless (not defined $value or $value eq '')
1436 0 32 unless (not defined $value or $value eq '')
1465 0 126 unless (defined $value and not $value =~ /^$/)
1471 252 0 unless grep((lc $_ eq lc $hfname), @{$$self{'originating_ip_headers'};})
1487 0 63 unless (not defined $value or $value eq '')
1561 0 1 if ($value =~ /^test(?::\s*\S.*)?$/) { }
1 0 elsif ($value =~ /^(?:yes|1)$/) { }
0 0 elsif ($value =~ /^(?:no|0)$/) { }
1609 1 0 if ($value =~ /^(?: \[ ([^\]]*) \] | ([^:]*) ) : (\d+) \z/sx) { }
0 0 elsif ($value =~ /^(?: \[ ([^\]]*) \] | ([0-9A-F.:]+ (?: %[A-Z0-9._~-]* )? ) ) \z/six) { }
1610 1 0 defined $1 ? :
1613 0 0 defined $1 ? :
1618 0 1 if $address =~ s/ ( % [A-Z0-9._~-]* ) \z//six
1620 1 0 if ($address =~ /$IP_ADDRESS/ and $port >= 1 and $port <= 65535) { }
1621 1 0 unless $self->{'dns_servers'}
1642 0 1 unless (not defined $value or $value eq '')
1686 0 0 if ($range =~ /^(\d{1,5})\z/) { }
0 0 elsif ($range =~ /^(\d{1,5})-(\d{1,5})\z/) { }
1688 0 0 if ($1 < 1 or $1 > 65535)
1691 0 0 if ($1 < 1 or $1 > 65535)
1692 0 0 if ($2 < 1 or $2 > 65535)
1723 0 0 if ($range =~ /^(\d{1,5})\z/) { }
0 0 elsif ($range =~ /^(\d{1,5})-(\d{1,5})\z/) { }
1724 0 0 if ($1 > 65535)
1728 0 0 if ($1 > 65535 or $2 > 65535)
1766 0 0 unless (not defined $value or $value eq '')
1843 0 0 if ($option =~ /^no(rotate|dns0x20)\z/) { }
0 0 elsif ($option =~ /^no(edns)0?\z/) { }
0 0 elsif ($option =~ /^(rotate|dns0x20)\z/) { }
0 0 elsif ($option =~ /^(edns)0? (?: = (\d+) )? \z/x) { }
1859 0 0 if $self->{'dns_options'}{$1} < 512
1909 0 0 unless defined $value and $value =~ s/^(allow|deny)\s+//i
1911 0 0 lc $1 eq 'deny' ? :
1933 0 0 if defined $value and $value ne ''
2057 0 0 if $value eq ''
2061 0 0 if (/^(none|noall)\z/) { }
0 0 elsif ($_ eq 'all') { }
0 0 elsif (/^(no)?(.+)\z/s and exists $all_kw{$2}) { }
2066 0 0 defined $1 ? :
2094 0 0 if ($value eq '')
2411 0 0 unless ($value =~ /^(nfssafe|flock|win32)$/)
2456 0 0 if ($value eq '')
2708 0 0 if ($value eq '') { }
0 0 elsif (not $value =~ /^[01]$/) { }
2716 0 0 $self->{'allow_user_rules'} ? :
2739 0 441 if ($value eq '') { }
0 441 elsif (not $self->{'parser'}->is_delimited_regexp_valid('redirector_pattern', $value)) { }
2750 441 0 if $3
3005 2300 567 if ($value =~ /^(\S+)\s+(?:rbl)?eval:(.*)$/) { }
63 504 elsif ($value =~ /^(\S+)\s+exists:(.*)$/) { }
3008 0 2300 unless ($fn =~ /^\w+(\(.*\))?$/)
3011 1 2299 if ($fn =~ /^check_(?:rbl|dns)/) { }
3021 0 63 if (not $header_name =~ /\S/) { }
0 63 elsif (not $header_name =~ /^([^: \t]+)$/) { }
3033 0 504 if (@values != 2)
3067 85 234 if ($value =~ /^(\S+)\s+eval:(.*)$/) { }
3071 0 85 unless ($fn =~ /^\w+(\(.*\))?$/)
3078 0 234 if (@values != 2)
3111 0 63 if (@values != 2)
3142 0 0 if ($value =~ /^(\S+)\s+eval:(.*)$/) { }
3146 0 0 if (@values != 2)
3176 248 0 if ($value =~ /^(\S+)\s+eval:(.*)$/) { }
3180 0 0 if (@values != 2)
3229 0 72 if (@values != 2)
3232 0 72 if ($values[1] =~ /\*\s*\*/)
3261 0 0 unless ($value =~ /\s*(\w+)(?:\s+(?:\w+(?:\s+\w+)*))?\s*$/)
3266 0 0 if (not exists $self->{'tests'}{$rule_name})
3433 0 0 if ($value eq '')
3439 0 0 if ($_ eq $tag)
3441 0 0 if $tag
3460 1827 0 unless defined $COLLECT_REGRESSION_TESTS
3463 0 0 unless ($value =~ /^(\S+)\s+(ok|fail)\s+(.*)$/)
3506 0 1 unless (defined $value and not $value =~ /^$/)
3510 0 1 unless ($value =~ /^ ( \+? \d+ (?: \. \d*)? [smhdw]? ) (?: \s+ ( \+? \d+ (?: \. \d*)? [smhdw]? ) )? (?: \s+ (\S* [a-zA-Z]) )? $/six)
3517 0 2 if (defined $_ and s/\s*([smhdw])\z//i)
3522 1 0 if (not defined $zone) { }
3524 0 1 if defined $timeout_min
3531 0 0 if defined $timeout_min
3610 0 8568 unless (defined $value and not $value =~ /^$/)
3613 0 8568 unless ($value =~ /^[^\s.]+(?:\s+[^\s.]+)*$/)
3804 0 28918 unless (defined $value and not $value =~ /^$/)
3807 0 28918 unless ($value =~ /^[^\s.]+\.[^\s.]+(?:\s+[^\s.]+\.[^\s.]+)*$/)
3835 0 3025 unless (defined $value and not $value =~ /^$/)
3838 0 3025 unless ($value =~ /^[^\s.]+\.[^\s.]+\.[^\s.]+(?:\s+[^\s.]+\.[^\s.]+\.[^\s.]+)*$/)
3860 0 63 unless (not defined $value or $value eq '')
3891 0 63 unless (defined $value and not $value =~ /^$/)
3894 0 63 if (-d $value)
3919 0 0 unless ($value =~ /^0?[0-7]{3}$/)
3943 0 6 unless ($value =~ /^([_A-Za-z0-9:]+)$/)
4193 0 4680 if ($value eq '')
4198 0 4680 if ($value =~ /^(\S+)\s+(\S+)$/) { }
4680 0 elsif ($value =~ /^\S+$/) { }
4223 0 0 if ($value eq '')
4228 0 0 if ($value =~ /^(\S+)\s+(\S+)$/) { }
0 0 elsif ($value =~ /^\S+$/) { }
4601 0 81 unless tie %{$$self{'descriptions'};}, 'Mail::SpamAssassin::Util::TieOneStringHash'
4678 0 0 if (@_)
4719 0 0 if ($test_type eq 'rbl_evals')
4723 0 0 if (defined $priority) { }
4739 0 0 if ($test_type eq 'rbl_evals')
4743 0 0 if (defined $priority) { }
4748 0 0 if (exists $self->{$test_type}{$pri}{$rulename})
4760 0 0 if ($test_type eq 'rbl_evals')
4764 0 0 if (defined $priority) { }
4769 0 0 if (exists $self->{$test_type}{$pri}{$rulename})
4793 0 0 if (@rules_to_keep == 0)
4811 0 0 unless $rules_to_keep_hash{$rulekey}
4826 0 0 if $token eq $meta
4830 0 0 if ($self->get_rule_value('meta_tests', $token))
4842 0 88 if ($test_type eq 'rbl_evals')
4843 0 0 unless $self->{$test_type}{$rulename}
4848 0 88 if (defined $priority) { }
4850 0 0 unless $self->{$test_type}{$priority}{$rulename}
4857 88 0 if ($self->{$test_type}{$pri}{$rulename})
4862 0 88 unless $found_p
4875 0 1 if $port_range_lo < 0
4876 0 1 if $port_range_hi > 65535
4877 1 0 if (not defined $$bitset_ref) { }
0 0 elsif ($$bitset_ref eq '') { }
4883 1 0 !$value ? :
4891 0 1 !$value ? :
4914 0 0 if (@_ == 1) { }
4937 79 1 unless (defined $self->{'found_any_rules'})
4960 0 13 if ($rulename =~ /AUTOLEARNTEST/i)
4964 0 13 unless defined $type
4966 9 4 if ($type == $TYPE_HEAD_TESTS or $type == $TYPE_HEAD_EVALS) { }
0 4 elsif ($type == $TYPE_META_TESTS) { }
4972 0 0 if ($tflags =~ /\bnet\b/i) { }
4986 0 4 if ($rulename =~ /AUTOLEARNTEST/i)
4990 0 4 unless defined $type
4992 4 0 if ($type == $TYPE_BODY_TESTS or $type == $TYPE_BODY_EVALS or $type == $TYPE_URI_TESTS or $type == $TYPE_URI_EVALS) { }
0 0 elsif ($type == $TYPE_META_TESTS) { }
5000 0 0 if ($tflags =~ /\bnet\b/i) { }
5014 0 4680 if ($path)
5037 1 2 unless (defined $source)
5040 2 1 unless (defined $dest)
5088 12 0 if ($i eq 'HASH') { }
0 0 elsif ($i eq 'ARRAY') { }
5103 61 558 if exists $done{$k}
5108 438 120 if ($i eq '') { }
0 120 elsif ($i eq 'SCALAR') { }
21 99 elsif ($i eq 'ARRAY') { }
99 0 elsif ($i eq 'HASH') { }
5128 525 63 if exists $done{$k}
5155 2 0 if (not $self->{'main'}{'keep_config_parsing_metadata'} || $self->{'allow_user_rules'})
5167 226 113 if ($add_loopback)