Branch Coverage

inc/Test/Builder.pm
Criterion Covered Total %
branch 78 346 22.5


line true false branch
12 0 2 if ($] < 5.008)
23 0 2 if ($] >= 5.008001 and $Test::Builder::Config{'useithreads'} and $INC{'threads.pm'}) { }
33 0 0 if ($type eq 'HASH') { }
0 0 elsif ($type eq 'ARRAY') { }
0 0 elsif ($type eq 'SCALAR') { }
48 0 0 if ($type eq 'HASH') { }
0 0 elsif ($type eq 'ARRAY') { }
0 0 elsif ($type eq 'SCALAR') { }
173 0 0 if ($$self{'Child_Name'})
207 0 0 if ('CODE' ne ref $subtests)
218 0 0 unless (eval { do { &$subtests(); 1 } })
227 0 0 if $error and not eval { do { $error->isa('Test::Builder::Exception') } }
255 0 0 unless $self->parent
256 0 0 if ($$self{'Child_Name'})
266 0 0 if ($$self{'Skip_All'}) { }
0 0 elsif (not @{$$self{'Test_Results'};}) { }
284 0 3 if (@_)
318 0 0 if ($self->parent)
425 0 1 unless $cmd
429 0 1 if $$self{'Have_Plan'}
431 1 0 if (my $method = $plan_cmds{$cmd}) { }
447 1 0 if ($arg) { }
0 0 elsif (not defined $arg) { }
476 1 0 if (@_)
477 0 1 unless $max =~ /^\+?\d+$/
483 1 0 unless $self->no_header
499 0 0 if $arg
533 0 2 if $$self{'Have_Output_Plan'}
536 1 1 if defined $directive
537 1 1 if defined $reason
585 0 0 if (defined $num_tests) { }
592 0 0 if ($$self{'Done_Testing'})
600 0 0 if ($self->expected_tests and $num_tests != $self->expected_tests) { }
608 0 0 unless $$self{'Have_Output_Plan'}
613 0 0 if $$self{'Expected_Tests'} != $$self{'Curr_Test'}
616 0 0 if $$self{'Curr_Test'} == 0
635 1 0 if $$self{'Expected_Tests'}
636 0 0 if $$self{'No_Plan'}
652 0 1 $self->parent ? :
654 1 0 unless $self->no_header
655 0 1 if ($self->parent)
677 2 0 if (defined $pack)
707 0 1 if ($$self{'Child_Name'} and not $$self{'In_Destroy'})
708 0 0 unless defined $name
714 1 0 $test ? :
722 0 1 if defined $name and $name =~ /^[\d\s]+$/
731 0 1 if $in_todo
738 0 1 if (not $test) { }
740 0 0 $self->in_todo ? :
747 1 0 if $self->use_numbers
749 1 0 if (defined $name) { }
758 0 1 if ($self->in_todo) { }
773 0 1 unless ($test)
774 0 0 $self->in_todo ? :
775 0 0 if $ENV{'HARNESS_ACTIVE'}
778 0 0 if (defined $name) { }
787 0 1 unless $test or $self->in_todo
792 1 0 $test ? :
802 0 1 unless defined $plan
803 0 1 if $plan =~ /\D/
804 0 1 if $plan < $$self{'Curr_Test'}
815 0 2 if ($self->_is_object($$thing))
816 0 0 if (my $string_meth = overload::Method($$thing, $type))
828 0 2 if ref $thing
0 2 $self->_try(sub { $thing->isa('UNIVERSAL') if ref $thing; } ) ? :
843 0 0 unless $self->_is_dualvar($$val)
855 0 0 if ref $val
859 0 0 $numval ne $val ? :
0 0 if return $numval != 0
884 0 0 unless (defined $got and defined $expect)
889 0 0 unless $test
902 0 0 unless (defined $got and defined $expect)
907 0 0 unless $test
917 0 0 if (defined $$val) { }
918 0 0 if ($type eq 'eq' or $type eq 'ne') { }
979 0 0 unless (defined $got and defined $dont_expect)
984 0 0 unless $test
995 0 0 unless (defined $got and defined $dont_expect)
1000 0 0 unless $test
1073 0 0 $numeric_cmps{$type} ? :
1078 0 0 if $error
1085 0 0 unless ($ok)
1088 0 0 if ($type =~ /^(eq|==)$/) { }
0 0 elsif ($type =~ /^(ne|!=)$/) { }
1104 0 0 defined $got ? :
1105 0 0 defined $expect ? :
1121 0 0 if defined $file and defined $line
1193 0 0 if $self->use_numbers
1195 0 0 if length $why
1233 0 0 if $self->use_numbers
1299 0 0 unless defined $regex
1304 0 0 if (_is_qr($regex)) { }
0 0 elsif (($re, $opts) = $regex =~ m[^ /(.*)/ (\w*) $ ]sx or (undef, $re, $opts) = $regex =~ /^ m([^\w\s]) (.+) \1 (\w*) $/sx) { }
1312 0 0 length $opts ? :
1323 0 0 if defined &re::is_regexp
1332 0 0 unless (defined $usable_regex)
1349 0 0 if $cmp eq '!~'
1355 0 0 unless ($ok)
1356 0 0 defined $this ? :
1357 0 0 $cmp eq '=~' ? :
1404 0 4 if $error and $opts{'die_on_fail'}
1406 0 4 wantarray ? :
1423 0 6 unless defined $maybe_fh
1425 6 0 if ref $maybe_fh eq 'GLOB'
1426 0 0 if ref \$maybe_fh eq 'GLOB'
1466 0 3 if (defined $level)
1498 0 1 if (defined $use_nums)
1534 0 4 if (defined $no)
1606 0 0 $self->in_todo ? :
1612 0 0 if $self->no_diag
1613 0 0 unless @msgs
1616 0 0 if $^C
1620 0 0 defined $_ ? :
1651 0 0 ref $_ ? :
1656 0 0 if $dumper->can('Sortkeys')
1685 0 3 if $^C
1696 0 3 unless $msg =~ /\n\z/
1698 0 3 if (&Encode::is_utf8($msg)) { }
1741 2 3 if (defined $fh)
1750 2 0 if (defined $fh)
1759 2 0 if (defined $fh)
1770 6 0 if ($self->is_fh($file_or_fh)) { }
0 0 elsif (ref $file_or_fh eq 'SCALAR') { }
1775 0 0 if ($] >= 5.008) { }
1776 0 0 unless open $fh, '>>', $file_or_fh
1781 0 0 unless $fh = 'Test::Builder::IO::Scalar'->new($file_or_fh)
1786 0 0 unless open $fh, '>', $file_or_fh
1825 0 2 if $$self{'Opened_Testhandles'}
1829 0 2 unless open $Testout, '>&STDOUT'
1830 0 2 unless open $Testerr, '>&STDERR'
1848 0 0 if @src_layers
1933 0 0 if (defined $num)
1938 0 0 if ($num > @$test_results) { }
0 0 elsif ($num < @$test_results) { }
1939 0 0 @$test_results ? :
1980 2 0 if (@_)
2086 0 1 if defined $$self{'Todo'}
2090 0 1 if defined $todo
2109 0 3 unless $pack
2127 0 2 defined $$self{'Todo'} || $self->find_TODO ? :
2175 0 0 @_ ? :
2178 0 0 if ($self->in_todo)
2198 0 0 unless ($$self{'Start_Todo'})
2204 0 0 if ($$self{'Start_Todo'} and @{$$self{'Todo_Stack'};}) { }
2238 0 3 wantarray ? :
2282 0 0 if ($check)
2318 0 2 if $self->no_ending
2319 0 2 if $$self{'Ending'}++
2325 0 2 if ($$self{'Original_Pid'} != $$)
2330 0 2 if (not $$self{'Have_Plan'} and $$self{'Curr_Test'})
2337 1 1 unless ($$self{'Have_Plan'})
2342 0 1 if ($$self{'Bailed_Out'})
2348 1 0 if (@$test_results) { }
0 0 elsif ($$self{'Skip_All'}) { }
0 0 elsif ($real_exit_code) { }
2350 0 1 if ($$self{'No_Plan'})
2351 0 0 unless $self->no_header
2360 0 1 unless defined $$test_results[$idx]
2368 0 1 if ($num_extra != 0)
2369 0 0 $$self{'Expected_Tests'} == 1 ? :
2376 0 1 if ($num_failed)
2378 0 0 $num_failed == 1 ? :
2380 0 0 $num_extra == 0 ? :
2388 0 1 if ($real_exit_code)
2393 0 0 if _my_exit($real_exit_code)
2397 0 1 if ($num_failed) { }
0 1 elsif ($num_extra != 0) { }
2398 0 0 $num_failed <= 254 ? :
2407 1 0 if _my_exit($exit_code)
2410 0 0 if _my_exit(0)
2417 0 0 if _my_exit($real_exit_code)
2422 0 0 if _my_exit(255)
2430 2 0 if defined $Test