Condition Coverage

lib/Text/PO.pm
Criterion Covered Total %
condition 88 275 32.0


and 2 conditions

line l !l condition
1261 2 0 $self->{'plural'} and scalar @{$self->{'plural'};}

and 3 conditions

line !l l&&!r l&&r condition
132 0 0 0 $elem->is_include and ($elem->file // "") eq $id
0 0 0 not $elem->is_include and ($elem->id // "") eq $id
203 0 0 0 $elem->is_include and ($elem->file // "") eq $id
0 0 0 not $elem->is_include and ($elem->id // "") eq $id
279 7 0 1 $e->plural and $e->msgid_plural
444 7 1 0 ref($msgid // "") eq "ARRAY" and not scalar @$msgid
472 1 0 0 $opts->{'msgid_only'} and ($e->msgid_as_text // "") eq ($elem->msgid_as_text // "")
0 0 1 ($e->msgid_as_text // "") eq ($elem->msgid_as_text // "") and ($e->msgstr_as_text // "") eq ($elem->msgstr_as_text // "")
611 0 0 9 not $opts->{'encoding'} and $self->encoding
686 0 0 9 $source and $source->file
722 0 0 7 $source && $source->file
748 4 1 1 defined $lang and defined $sub_lang
5 1 0 defined $lang and defined $sub_lang and lc $lang ne lc $sub_lang
754 0 1 5 $sub_elems and @$sub_elems
774 13 0 0 $ignoring_leading_blanks and /^[[:blank:]\h]*$/
813 213 0 15 not $foundFirstLine and /^\S/
822 23 21 3 scalar @$elem > 1 and not length $e->msgid_as_text
44 1 2 scalar @$elem > 1 and not length $e->msgid_as_text and length $e->msgstr_as_text
22 0 2 scalar @$elem > 1 and not length $e->msgid_as_text and length $e->msgstr_as_text and length $elem->[-1]->msgid_as_text
1 2 0 scalar @$elem > 1 and not length $e->msgid_as_text and length $e->msgstr_as_text and length $elem->[-1]->msgid_as_text and not length $elem->[-1]->msgstr_as_text
896 0 0 10 exists $meta->{'language'} and defined $meta->{'language'}
0 0 10 exists $meta->{'language'} and defined $meta->{'language'} and length($meta->{'language'} // "")
956 3 0 0 not $self->meta->length and $c =~ /^domain[[:blank:]\h]+\"(.*?)\"/
1045 0 10 4 $elem->[-1] ne $e and length $e->msgid_as_text
10 1 3 $elem->[-1] ne $e and length $e->msgid_as_text and ++$$seen{$e->msgid_as_text} < 2
1085 0 0 2 defined $s and length $s
1106 0 0 2 $attribute =~ /^[a-zA-Z][a-zA-Z0-9\_\-]+$/ and length $attribute <= 255
1108 0 0 2 $value =~ /^[a-zA-Z][a-zA-Z0-9\_\-]+$/ and length $value <= 255
1122 0 0 0 $self->{'use_json'} and -e "$this.json" || $this =~ /\.json$/
1160 0 0 2 $self->{'use_json'} and -e "$this.json" || $this =~ /\.json$/
1180 0 2 0 length $ref->{'domain'} and not length $self->domain
1334 0 0 0 not exists $self->{'meta'}{$k2} and length $Text::PO::DEF_META->{$k}
1351 0 0 0 scalar @_ and @_ % 2 || !(@_ % 2) && ref $_[1] eq 'HASH'
1363 0 0 0 -e $file and -w $file
1511 0 0 0 ref $v and $self->_is_a($v, "DateTime")
1526 0 0 4 defined $meta and length $meta
1592 0 0 0 defined $self->{'original'} and length $self->{'original'}
1595 0 0 0 defined $self->{'value'} and length $self->{'value'}
1605 0 0 0 $self->{'params'} and ref $self->{'params'} eq "HASH"
1651 0 0 0 length $str > 0 and not $str =~ /^$Text::PO::HeaderValue::TEXT_REGEXP$/

or 2 conditions

line l !l condition
103 0 0 $e->msgid_as_text || (return $self->error('No msgid was provided'))
109 0 0 $opts->{'msgid'} || (return $self->error('No msgid was provided'))
110 0 0 $self->new_element(%$opts) || (return $self->pass_error)
132 0 0 $elem->file // ""
0 0 $elem->id // ""
180 0 0 $self->new_element(%$opts) || (return $self->pass_error)
188 0 0 $elem->file // ""
203 0 0 $elem->file // ""
0 0 $elem->id // ""
256 8 0 $msgid // ""
322 0 0 $s->open || (return $self->pass_error($s->error))
391 1 0 $self->encoding || 'utf8'
444 8 0 $msgid // ""
463 1 0 shift @_ || (return $self->error('No element to check existence was provided.'))
466 0 1 $opts->{'msgid_only'} //= 0
472 0 0 $e->msgid_as_text // ""
0 0 $elem->msgid_as_text // ""
1 0 $e->msgid_as_text // ""
1 0 $elem->msgid_as_text // ""
1 0 $e->msgstr_as_text // ""
1 0 $elem->msgstr_as_text // ""
474 0 0 $e->file // ""
0 0 $elem->file // ""
619 47 0 shift @_ || (return '')
632 15 0 shift @_ || (return $self->error('No file or glob was provided to parse po file.'))
650 15 0 $self->new_file($this) || (return $self->pass_error)
652 15 0 $file->open('<') || (return $self->error(qq[Unable to open po file "$this" in read mode: $!]))
665 6 9 $opts->{'seen'} // {}
666 6 9 $opts->{'depth'} // 0
681 9 0 shift @_ || (return $self->error('No file to include was provided.'))
688 9 0 $self->new_file($source->file) || (return $self->pass_error)
690 9 0 $self->new_file($inc_name, 'base_file', $base_file) || (return $self->pass_error)
759 7 2 $se->id // ""
836 28 18 $e->id // ""
859 10 0 $this->msgstr || []
896 10 0 $meta->{'language'} // ""
1043 0 1 $e->msgid // ""
1066 4 0 $self->_parse_timestamp($str) || (return $self->error(qq[Date time string provided is unsupported: "$str".]))
1120 0 0 shift @_ || (return $self->error('No file or glob was provided to parse po file.'))
1125 0 0 'IO::File'->new("$file") || (return $self->error(qq[Unable to open json po file "$file" in read mode: $!]))
1158 2 0 shift @_ || (return $self->error('No file or glob was provided to parse po file.'))
1163 2 0 'IO::File'->new($file) || (return $self->error(qq[Unable to open json po file "$file" in read mode: $!]))
1364 0 0 'IO::File'->new(">$file") || (return $self->error(qq[Unable to open file "$file" in write mode: $!]))
1389 0 0 'IO::File'->new("+<$this") || (return $self->error("Unable to open file '${this}' in read/write mode: $!"))
1397 0 0 'IO::File'->new(">$this") || (return $self->error("Unable to write to file '${this}': $!"))
1507 4 0 shift @_ || (return $self->error('No field was provided to get its DateTime object equivalent.'))
1537 27 0 shift @_ || (return $self->error('No field was provided to get its DateTime object equivalent.'))
1631 2 0 shift @_ || (return $self->error('No parameter name was provided.'))

or 3 conditions

line l !l&&r !l&&!r condition
116 0 0 0 $e2->is_meta or $e2->is_include
124 0 0 0 $opts->{'before'} || $opts->{'after'}
132 0 0 0 $elem->is_include and ($elem->file // "") eq $id or not $elem->is_include and ($elem->id // "") eq $id
195 0 0 0 $opts->{'before'} || $opts->{'after'}
203 0 0 0 $elem->is_include and ($elem->file // "") eq $id or not $elem->is_include and ($elem->id // "") eq $id
256 0 0 8 $e->is_meta or not length($msgid // "")
349 0 0 2 exists $ENV{'LANGUAGE'} or exists $ENV{'LANG'}
350 0 0 0 $ENV{'LANGUAGE'} || $ENV{'LANG'}
0 0 0 $ENV{'LANGUAGE'} || $ENV{'LANG'}
397 1 0 0 $self->{'_parsed'} or scalar keys %{$$self{"meta"};}
444 0 0 8 $e->is_meta or not length $msgid
0 0 8 $e->is_meta or not length $msgid or ref($msgid // "") eq "ARRAY" and not scalar @$msgid
469 0 1 0 $elem->is_include or length $elem->msgid_as_text
472 0 0 1 $opts->{'msgid_only'} and ($e->msgid_as_text // "") eq ($elem->msgid_as_text // "") or ($e->msgid_as_text // "") eq ($elem->msgid_as_text // "") and ($e->msgstr_as_text // "") eq ($elem->msgstr_as_text // "")
836 27 12 1 $e->id || length($e->msgstr // '')
1122 0 0 0 -e "$this.json" || $this =~ /\.json$/
1160 0 2 0 -e "$this.json" || $this =~ /\.json$/
1351 0 0 0 @_ % 2 || !(@_ % 2) && ref $_[1] eq 'HASH'
1353 0 0 0 $opts->{'handle'} || $opts->{'file'}