|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
33
 | 
 10  | 
 0  | 
 if (@args % 2) { }  | 
 
| 
78
 | 
 0  | 
 90  | 
 unless (exists $o{$opt})  | 
 
| 
84
 | 
 0  | 
 90  | 
 if (exists $opts{'opt'} or exists $ENV{$OPT} or defined ${"main::$OPT";})  | 
 
| 
89
 | 
 0  | 
 0  | 
 if (defined ${"main::$OPT";}) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (exists $ENV{$OPT}) { }  | 
 
| 
101
 | 
 0  | 
 10  | 
 if ($self->{'mode'} ne "test")  | 
 
| 
114
 | 
 10  | 
 0  | 
 if (-f "$0") { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (-d './t') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (-d '../t') { }  | 
 
| 
121
 | 
 10  | 
 0  | 
 if (-d "$moddir/t")  | 
 
| 
124
 | 
 10  | 
 0  | 
 if (-d "$moddir/lib")  | 
 
| 
139
 | 
 0  | 
 10  | 
 if (defined $val)  | 
 
| 
144
 | 
 10  | 
 0  | 
 if ($self->{'use_lib'} eq "on")  | 
 
| 
146
 | 
 0  | 
 20  | 
 unless defined $dir  | 
 
| 
154
 | 
 0  | 
 0  | 
 if ($req and $req eq 'mod') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($req and $req eq 'lib') { }  | 
 
| 
164
 | 
 0  | 
 0  | 
 unless defined $val  | 
 
| 
165
 | 
 0  | 
 0  | 
 unless $val =~ /^\d+$/  | 
 
| 
171
 | 
 0  | 
 0  | 
 unless $val  | 
 
| 
172
 | 
 0  | 
 0  | 
 unless $val =~ /^\d+$/  | 
 
| 
178
 | 
 0  | 
 0  | 
 if (not defined $val) { }  | 
 
| 
182
 | 
 0  | 
 0  | 
 unless $val =~ /^\d+$/  | 
 
| 
190
 | 
 0  | 
 0  | 
 if ($self->{'plandone'})  | 
 
| 
195
 | 
 0  | 
 0  | 
 unless defined $val  | 
 
| 
196
 | 
 0  | 
 0  | 
 unless $val =~ /^\d+$/  | 
 
| 
199
 | 
 0  | 
 0  | 
 if ($val != 0)  | 
 
| 
207
 | 
 0  | 
 8  | 
 if ($self->{'plandone'})  | 
 
| 
212
 | 
 8  | 
 0  | 
 unless $val  | 
 
| 
213
 | 
 0  | 
 8  | 
 unless $val =~ /^\d+$/  | 
 
| 
216
 | 
 0  | 
 8  | 
 if ($val != $main::TI_NUM)  | 
 
| 
223
 | 
 0  | 
 0  | 
 unless $val  | 
 
| 
229
 | 
 0  | 
 0  | 
 unless $val  | 
 
| 
235
 | 
 0  | 
 0  | 
 unless $val  | 
 
| 
241
 | 
 0  | 
 0  | 
 unless $val  | 
 
| 
248
 | 
 0  | 
 2  | 
 if (@features)  | 
 
| 
251
 | 
 0  | 
 0  | 
 unless (exists $self->{'features'}{$feature} and $self->{'features'}{$feature})  | 
 
| 
254
 | 
 0  | 
 0  | 
 unless $reason  | 
 
| 
259
 | 
 0  | 
 0  | 
 unless $skip  | 
 
| 
262
 | 
 0  | 
 2  | 
 if ($self->{'plandone'} or $self->{'testsrun'}) { }  | 
 
| 
264
 | 
 0  | 
 0  | 
 unless $reason  | 
 
| 
268
 | 
 0  | 
 2  | 
 unless $reason  | 
 
| 
288
 | 
 0  | 
 0  | 
 if $self->{'quiet'} == 2  | 
 
| 
294
 | 
 0  | 
 0  | 
 if $self->{'quiet'}  | 
 
| 
306
 | 
 2  | 
 4  | 
 unless $mode  | 
 
| 
307
 | 
 4  | 
 2  | 
 unless $mode eq "feature"  | 
 
| 
315
 | 
 2  | 
 4  | 
 if ($module =~ /^\d+(?:\.\d+)?$/) { }  | 
 
| 
323
 | 
 0  | 
 4  | 
 unless $self->_is_module_name($module)  | 
 
| 
337
 | 
 2  | 
 4  | 
 if $mode eq "forbid"  | 
 
| 
338
 | 
 2  | 
 4  | 
 if $mode eq "feature"  | 
 
| 
348
 | 
 3  | 
 3  | 
 if ($eval_result) { }  | 
 
| 
350
 | 
 0  | 
 3  | 
 if ($mode eq 'forbid') { }  | 
 
| 
 | 
 1  | 
 2  | 
 elsif ($mode eq 'feature') { }  | 
 
| 
354
 | 
 0  | 
 0  | 
 unless $self->{'quiet'} == 2  | 
 
| 
358
 | 
 1  | 
 0  | 
 unless ($self->{'quiet'})  | 
 
| 
368
 | 
 2  | 
 1  | 
 if ($mode eq 'forbid') { }  | 
 
| 
 | 
 1  | 
 0  | 
 elsif ($mode eq 'feature') { }  | 
 
| 
372
 | 
 1  | 
 0  | 
 unless ($self->{'quiet'})  | 
 
| 
385
 | 
 0  | 
 6  | 
 if $ok and $self->{'quiet'} or not $ok and $self->{'quiet'} == 2  | 
 
| 
396
 | 
 7  | 
 5  | 
 if ($args[$#args] eq "forbid" or $args[$#args] eq "feature")  | 
 
| 
400
 | 
 10  | 
 2  | 
 unless $mode eq "feature"  | 
 
| 
405
 | 
 3  | 
 9  | 
 if (@args == 1 and $args[0] =~ /^\d+(?:\.\d+)?$/) { }  | 
 
| 
 | 
 9  | 
 0  | 
 elsif (@args) { }  | 
 
| 
417
 | 
 0  | 
 9  | 
 unless ($self->_is_module_name($module))  | 
 
| 
423
 | 
 3  | 
 6  | 
 if (@args and $args[0] =~ /^\d+(?:\.\d+)?$/)  | 
 
| 
427
 | 
 4  | 
 5  | 
 @args ? :  | 
 
| 
447
 | 
 5  | 
 7  | 
 if $mode eq "forbid"  | 
 
| 
448
 | 
 2  | 
 10  | 
 if $mode eq "feature"  | 
 
| 
459
 | 
 6  | 
 6  | 
 if ($eval_result) { }  | 
 
| 
461
 | 
 0  | 
 6  | 
 if ($mode eq 'forbid') { }  | 
 
| 
 | 
 1  | 
 5  | 
 elsif ($mode eq 'feature') { }  | 
 
| 
465
 | 
 0  | 
 0  | 
 unless $self->{'quiet'} == 2  | 
 
| 
469
 | 
 1  | 
 0  | 
 unless ($self->{'quiet'})  | 
 
| 
479
 | 
 5  | 
 1  | 
 if ($mode eq 'forbid') { }  | 
 
| 
 | 
 1  | 
 0  | 
 elsif ($mode eq 'feature') { }  | 
 
| 
483
 | 
 1  | 
 0  | 
 unless ($self->{'quiet'})  | 
 
| 
496
 | 
 0  | 
 12  | 
 if $ok and $self->{'quiet'} or not $ok and $self->{'quiet'} == 2  | 
 
| 
511
 | 
 13  | 
 0  | 
 $module =~ /^[a-zA-Z]\w*$/ ? :  | 
 
| 
525
 | 
 0  | 
 18  | 
 if defined $sigdie  | 
 
| 
542
 | 
 0  | 
 17  | 
 if ($op eq 'skip') { }  | 
 
| 
 | 
 17  | 
 0  | 
 elsif ($op eq 'pass') { }  | 
 
| 
558
 | 
 0  | 
 17  | 
 if $ok and $self->{'quiet'} or not $ok and $self->{'quiet'} == 2  | 
 
| 
571
 | 
 0  | 
 20  | 
 if $skip  | 
 
| 
575
 | 
 1  | 
 19  | 
 if (@args == 0)  | 
 
| 
586
 | 
 6  | 
 13  | 
 if (@args == 1) { }  | 
 
| 
 | 
 10  | 
 3  | 
 elsif (@args == 2) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif (@args > 2) { }  | 
 
| 
618
 | 
 0  | 
 11  | 
 if ($op eq 'skip') { }  | 
 
| 
 | 
 11  | 
 0  | 
 elsif ($op eq 'pass') { }  | 
 
| 
634
 | 
 0  | 
 11  | 
 if $ok and $self->{'quiet'} or not $ok and $self->{'quiet'} == 2  | 
 
| 
647
 | 
 0  | 
 24  | 
 if $skip  | 
 
| 
651
 | 
 0  | 
 24  | 
 if (@args < 2)  | 
 
| 
658
 | 
 0  | 
 24  | 
 if (@args == 1) { }  | 
 
| 
 | 
 24  | 
 0  | 
 elsif (@args == 2) { }  | 
 
| 
679
 | 
 21  | 
 22  | 
 if (ref $args->[0] eq 'CODE') { }  | 
 
| 
 | 
 7  | 
 15  | 
 elsif (ref $args->[0] eq 'ARRAY') { }  | 
 
| 
682
 | 
 17  | 
 4  | 
 if (ref $args->[0] eq "ARRAY")  | 
 
| 
707
 | 
 19  | 
 24  | 
 if ($type eq 'ok') { }  | 
 
| 
708
 | 
 13  | 
 6  | 
 if (ref $result eq 'ARRAY') { }  | 
 
| 
 | 
 2  | 
 4  | 
 elsif (ref $result eq 'HASH') { }  | 
 
| 
710
 | 
 18  | 
 0  | 
 if defined $ele  | 
 
| 
716
 | 
 4  | 
 0  | 
 if defined $val  | 
 
| 
720
 | 
 4  | 
 0  | 
 $result ? :  | 
 
| 
723
 | 
 9  | 
 10  | 
 if (not defined $expected) { }  | 
 
| 
733
 | 
 22  | 
 2  | 
 if ($type eq 'is') { }  | 
 
| 
740
 | 
 7  | 
 36  | 
 if (not $identical and $type ne "isnt")  | 
 
| 
741
 | 
 4  | 
 3  | 
 if ($func)  | 
 
| 
745
 | 
 7  | 
 0  | 
 unless $type eq "ok" and not defined $result  | 
 
| 
749
 | 
 43  | 
 0  | 
 $pass ? :  | 
 
| 
758
 | 
 18  | 
 0  | 
 if ($width)  | 
 
| 
760
 | 
 0  | 
 18  | 
 if $width < 10  | 
 
| 
761
 | 
 0  | 
 18  | 
 if length $str > $width  | 
 
| 
769
 | 
 0  | 
 38  | 
 if (not defined $s) { }  | 
 
| 
 | 
 10  | 
 28  | 
 elsif (ref $s eq 'ARRAY') { }  | 
 
| 
 | 
 2  | 
 26  | 
 elsif (ref $s eq 'HASH') { }  | 
 
| 
 | 
 0  | 
 26  | 
 elsif (ref $s) { }  | 
 
| 
 | 
 0  | 
 26  | 
 elsif ($s eq '') { }  | 
 
| 
797
 | 
 0  | 
 26  | 
 if ($s =~ /\s/) { }  | 
 
| 
800
 | 
 0  | 
 0  | 
 unless ($s =~ /$q/)  | 
 
| 
803
 | 
 0  | 
 0  | 
 unless ($s =~ /$qq/)  | 
 
| 
817
 | 
 0  | 
 0  | 
 unless defined $s1 or defined $s2  | 
 
| 
818
 | 
 0  | 
 76  | 
 unless defined $s1 and defined $s2  | 
 
| 
819
 | 
 4  | 
 72  | 
 if ref $s1 ne ref $s2  | 
 
| 
821
 | 
 17  | 
 55  | 
 if (ref $s1 eq 'ARRAY') { }  | 
 
| 
 | 
 4  | 
 51  | 
 elsif (ref $s1 eq 'HASH') { }  | 
 
| 
 | 
 0  | 
 51  | 
 elsif (ref $s1) { }  | 
 
| 
822
 | 
 0  | 
 17  | 
 if $#$s1 != $#$s2  | 
 
| 
824
 | 
 2  | 
 33  | 
 unless $self->_cmp_structure($s1->[$i], $s2->[$i])  | 
 
| 
831
 | 
 0  | 
 4  | 
 if $#k1 != $#k2  | 
 
| 
833
 | 
 0  | 
 7  | 
 unless exists $s2->{$key}  | 
 
| 
834
 | 
 2  | 
 5  | 
 unless $self->_cmp_structure($s1->{$key}, $s2->{$key})  | 
 
| 
851
 | 
 0  | 
 44  | 
 if ($self->{'skipall'}) { }  | 
 
| 
 | 
 0  | 
 88  | 
 elsif ($main::TI_NUM < $self->{'start'} or $self->{'end'} and $main::TI_NUM > $self->{'end'}) { }  | 
 
| 
866
 | 
 0  | 
 2  | 
 unless $name  | 
 
| 
868
 | 
 0  | 
 2  | 
 if (!ref($func) eq "CODE")  | 
 
| 
877
 | 
 1  | 
 1  | 
 if ($input)  | 
 
| 
878
 | 
 0  | 
 1  | 
 if (-r $input) { }  | 
 
| 
 | 
 1  | 
 0  | 
 elsif (-r "$testdir/$input") { }  | 
 
| 
892
 | 
 2  | 
 0  | 
 unless ($outputdir)  | 
 
| 
893
 | 
 2  | 
 0  | 
 if (-d $testdir and -w $testdir) { }  | 
 
| 
900
 | 
 2  | 
 0  | 
 if ($outputdir)  | 
 
| 
901
 | 
 0  | 
 2  | 
 unless (-d $outputdir and -w $outputdir)  | 
 
| 
911
 | 
 0  | 
 2  | 
 if (not $expected) { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif (-r $expected) { }  | 
 
| 
 | 
 2  | 
 0  | 
 elsif (-r "$testdir/$expected") { }  | 
 
| 
927
 | 
 0  | 
 2  | 
 unless (-r "$output")  | 
 
| 
943
 | 
 2  | 
 0  | 
 unless $ENV{'TI_NOCLEAN'}  | 
 
| 
954
 | 
 7  | 
 0  | 
 $name ? :  | 
 
| 
972
 | 
 0  | 
 4  | 
 if (exists $opts{'feature'})  | 
 
| 
976
 | 
 0  | 
 0  | 
 unless exists $self->{'features'}{$feature} and $self->{'features'}{$feature}  | 
 
| 
979
 | 
 0  | 
 4  | 
 if (exists $opts{'disable'} and not $skip)  | 
 
| 
983
 | 
 0  | 
 0  | 
 if exists $self->{'features'}{$feature} and $self->{'features'}{$feature}  | 
 
| 
994
 | 
 0  | 
 4  | 
 if (exists $opts{'name'})  | 
 
| 
998
 | 
 0  | 
 4  | 
 if (exists $opts{'skip'})  | 
 
| 
1003
 | 
 0  | 
 4  | 
 if (exists $opts{'todo'})  | 
 
| 
1014
 | 
 0  | 
 4  | 
 unless (exists $opts{'tests'})  | 
 
| 
1021
 | 
 0  | 
 4  | 
 if (ref $tests eq 'ARRAY') { }  | 
 
| 
1027
 | 
 0  | 
 0  | 
 if (ref $result eq 'ARRAY') { }  | 
 
| 
1037
 | 
 1  | 
 3  | 
 if $gotexpected  | 
 
| 
1041
 | 
 2  | 
 2  | 
 if (exists $opts{'expected'})  | 
 
| 
1042
 | 
 0  | 
 2  | 
 if ($gotexpected)  | 
 
| 
1047
 | 
 1  | 
 1  | 
 if (ref $expected eq 'ARRAY') { }  | 
 
| 
1052
 | 
 1  | 
 0  | 
 if (ref $exp eq 'ARRAY') { }  | 
 
| 
1062
 | 
 0  | 
 1  | 
 if ($g)  | 
 
| 
1072
 | 
 0  | 
 3  | 
 if ($gotexpected and ($nexp != 1 and $nexp != $ntest))  | 
 
| 
1079
 | 
 3  | 
 1  | 
 if (exists $opts{'func'})  | 
 
| 
1081
 | 
 0  | 
 3  | 
 if (ref $func ne "CODE")  | 
 
| 
1093
 | 
 0  | 
 16  | 
 if ($skip)  | 
 
| 
1098
 | 
 0  | 
 16  | 
 if ($tests{$t}{'err'})  | 
 
| 
1108
 | 
 13  | 
 3  | 
 if ($gotexpected) { }  | 
 
| 
1112
 | 
 13  | 
 0  | 
 if $func  | 
 
| 
1115
 | 
 6  | 
 7  | 
 $nexp == 1 ? :  | 
 
| 
1124
 | 
 0  | 
 3  | 
 if (@$result == 1)  | 
 
| 
1135
 | 
 0  | 
 16  | 
 if ($op eq 'skip') { }  | 
 
| 
 | 
 16  | 
 0  | 
 elsif ($op eq 'pass') { }  | 
 
| 
1151
 | 
 0  | 
 16  | 
 if $ok and $self->{'quiet'} or not $ok and $self->{'quiet'} == 2  | 
 
| 
1170
 | 
 8  | 
 2  | 
 unless $reason  | 
 
| 
1172
 | 
 10  | 
 0  | 
 if ($self->{'mode'} eq 'test') { }  | 
 
| 
1176
 | 
 2  | 
 8  | 
 unless ($n)  | 
 
| 
1177
 | 
 0  | 
 2  | 
 unless $reason  | 
 
| 
1186
 | 
 0  | 
 0  | 
 if (not $n) { }  | 
 
| 
1190
 | 
 0  | 
 0  | 
 unless $self->{'quiet'}  | 
 
| 
1198
 | 
 19  | 
 39  | 
 unless $name  | 
 
| 
1204
 | 
 0  | 
 0  | 
 if $self->{'mode'} ne "test" and $self->{'quiet'}  | 
 
| 
1208
 | 
 0  | 
 58  | 
 if ($name =~ /^\d/ and $self->{'quiet'} != 2)  | 
 
| 
1217
 | 
 0  | 
 0  | 
 unless $name  | 
 
| 
1224
 | 
 0  | 
 0  | 
 if ($self->{'abort'} == 2) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($self->{'abort'}) { }  | 
 
| 
1233
 | 
 0  | 
 0  | 
 unless $name  | 
 
| 
1239
 | 
 0  | 
 0  | 
 if $self->{'mode'} ne "test" and $self->{'quiet'}  | 
 
| 
1241
 | 
 0  | 
 0  | 
 $name ? :  | 
 
| 
1307
 | 
 0  | 
 17  | 
 unless @$test  | 
 
| 
1311
 | 
 5  | 
 12  | 
 if ($gotboth == -1) { }  | 
 
| 
 | 
 0  | 
 12  | 
 elsif ($gotboth != $both) { }  | 
 
| 
1320
 | 
 7  | 
 10  | 
 if $gotboth  | 
 
| 
1335
 | 
 1  | 
 33  | 
 unless @$list  | 
 
| 
1345
 | 
 16  | 
 17  | 
 if ($line eq "")  | 
 
| 
1347
 | 
 0  | 
 16  | 
 unless $started  | 
 
| 
1352
 | 
 0  | 
 17  | 
 if ($line =~ /^#/)  | 
 
| 
1361
 | 
 0  | 
 17  | 
 unless $started  | 
 
| 
1375
 | 
 17  | 
 51  | 
 unless $self->_test_line($test)  | 
 
| 
1379
 | 
 7  | 
 44  | 
 if ($self->_parse_begin_results($test))  | 
 
| 
1380
 | 
 7  | 
 0  | 
 if ($curr eq 'args') { }  | 
 
| 
1391
 | 
 0  | 
 44  | 
 if $err  | 
 
| 
1393
 | 
 29  | 
 15  | 
 if ($curr eq 'args') { }  | 
 
| 
1400
 | 
 7  | 
 10  | 
 $curr eq 'results' ? :  | 
 
| 
1417
 | 
 112  | 
 17  | 
 if @$test  | 
 
| 
1428
 | 
 7  | 
 44  | 
 if $test->[0] =~ s/^ $sp_opt $results $eot //x  | 
 
| 
1445
 | 
 0  | 
 61  | 
 unless $self->_test_line($test)  | 
 
| 
1450
 | 
 0  | 
 61  | 
 if $err  | 
 
| 
1451
 | 
 2  | 
 59  | 
 if ($found)  | 
 
| 
1459
 | 
 0  | 
 59  | 
 if $err  | 
 
| 
1460
 | 
 7  | 
 52  | 
 if ($found)  | 
 
| 
1462
 | 
 0  | 
 7  | 
 if (@val == 1 and $val[0] eq "")  | 
 
| 
1469
 | 
 0  | 
 52  | 
 if $err  | 
 
| 
1470
 | 
 2  | 
 50  | 
 if ($found)  | 
 
| 
1472
 | 
 2  | 
 0  | 
 if (@val == 1 and $val[0] eq '') { }  | 
 
| 
1481
 | 
 0  | 
 50  | 
 if $err  | 
 
| 
1482
 | 
 2  | 
 48  | 
 if ($found)  | 
 
| 
1483
 | 
 2  | 
 0  | 
 if (@val == 1 and $val[0] eq '') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (@val % 2 == 0) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (not defined $val[$#val] or $val[$#val] eq '') { }  | 
 
| 
1504
 | 
 0  | 
 48  | 
 if $err  | 
 
| 
1509
 | 
 0  | 
 61  | 
 if $err  | 
 
| 
1510
 | 
 0  | 
 61  | 
 unless $found  | 
 
| 
1513
 | 
 0  | 
 68  | 
 if $v eq "__blank__"  | 
 
| 
1514
 | 
 0  | 
 68  | 
 if $v eq "__undef__"  | 
 
| 
1515
 | 
 62  | 
 6  | 
 if $v  | 
 
| 
1517
 | 
 61  | 
 0  | 
 if $found  | 
 
| 
1553
 | 
 2  | 
 59  | 
 if ($test->[0] =~ s/^ $sp_opt $q  ($min_str) $q  $EOT//x or $test->[0] =~ s/^ $sp_opt $qq ($min_str) $qq $EOT//x) { }  | 
 
| 
 | 
 0  | 
 59  | 
 elsif ($test->[0] =~ /^ $sp_opt $q/x or $test->[0] =~ /^ $sp_opt $qq/x) { }  | 
 
| 
1580
 | 
 2  | 
 159  | 
 if ($test->[0] =~ s/^ $sp_opt $open ($delim) $sp_opt //x) { }  | 
 
| 
 | 
 9  | 
 150  | 
 elsif ($test->[0] =~ s/^ $sp_opt $open $sp_opt //x) { }  | 
 
| 
1602
 | 
 0  | 
 17  | 
 if $e  | 
 
| 
1610
 | 
 0  | 
 17  | 
 if (not $m and $del)  | 
 
| 
1612
 | 
 0  | 
 0  | 
 unless ($self->_test_line($test))  | 
 
| 
1616
 | 
 0  | 
 0  | 
 if ($test->[0] =~ s/^ $sp_opt $newEOT //x) { }  | 
 
| 
1624
 | 
 0  | 
 17  | 
 if ($m eq $close and not @v) { }  | 
 
| 
1630
 | 
 11  | 
 6  | 
 if $m eq $close  | 
 
| 
1636
 | 
 2  | 
 9  | 
 if ($test->[0] eq "")  | 
 
| 
1640
 | 
 9  | 
 0  | 
 if ($test->[0] =~ s/^ $sp_opt $EOT //x) { }  |