Branch Coverage

blib/lib/Test/Valgrind/Session.pm
Criterion Covered Total %
branch 69 118 58.4


line true false branch
111 9 7 if (defined $vg and not ref $vg) { }
114 1 6 if $vg and ref $vg eq 'ARRAY'
116 5 2 unless $dirs
117 7 0 if ref $dirs eq 'ARRAY'
120 1 15 unless @paths
127 36 10 unless -x $_
129 10 0 if ($ver =~ /^valgrind-(\d+(\.\d+)*)/)
130 4 6 if ($min_version) { }
132 2 2 if $version < $min_version
140 7 8 unless defined $valgrind
144 8 0 unless $extra_supps and ref $extra_supps eq 'ARRAY'
145 0 0 if defined $_ and -f $_
175 6 2 unless ref $version
217 0 6 unless $_[0]{'extra_supps'}
239 0 18 unless &Scalar::Util::blessed($value) and $value->isa($base)
245 0 6 if ($cmd->isa('Test::Valgrind::Command::Aggregate'))
260 0 6 if ($self->do_suppressions) { }
263 0 6 unless ($self->no_def_supp)
266 0 0 if ($self->regen_def_supp and -e $def_supp)
270 0 0 if (defined $def_supp and not -e $def_supp)
271 0 0 $forced ? :
280 0 0 unless -e $def_supp
287 0 0 if -e $_
289 0 6 if (@supp_files > 1) { }
0 6 elsif (@supp_files) { }
4 2 elsif ($self->allow_no_supp) { }
311 0 4 unless pipe my $vrdr, my $vwtr
318 0 4 unless pipe my $erdr, my $ewtr
326 0 4 unless defined $pid
328 2 2 if ($pid == 0)
334 0 2 unless close $erdr
338 0 2 unless close $vrdr
340 0 2 unless fcntl $vwtr, 2, 0
370 0 2 unless close $vwtr
371 0 2 unless close $ewtr
378 1 3 if @ready == 1 and fileno $ready[0] == fileno $vrdr
382 0 3 if (not defined $bytes_read) { }
1 2 elsif ($bytes_read) { }
385 1 0 unless $child_err
389 1 1 if $child_err
396 0 1 if ($aborted)
402 1 1 unless (eval { do { local $SIG{'INT'} = sub { die 'valgrind analysis was interrupted'; } ; $self->_croak("close(\$vwtr): $!") unless close $vwtr; $self->_croak("close(\$ewtr): $!") unless close $ewtr; SEL: { my $sel = 'IO::Select'->new($vrdr, $erdr); my $child_err; while (my(@ready) = $sel->can_read) { do { last SEL if @ready == 1 and fileno $ready[0] == fileno $vrdr; my $buf; my $bytes_read = sysread($erdr, $buf, 4096); if (not defined $bytes_read) { $self->_croak("sysread(\$erdr): $!"); } elsif ($bytes_read) { $sel->remove($vrdr) unless $child_err; $child_err .= $buf; } else { $sel->remove($erdr); die $child_err if $child_err; } }; } ; } ; my $aborted = $self->parser->parse($self, $vrdr); if ($aborted) { $self->report($self->report_class->new_diag('valgrind has aborted')); return 0; } ; 1 } })
404 1 0 if kill 0, $pid
412 1 0 waitpid($pid, 0) == $pid ? :
414 0 1 unless close $erdr
415 0 1 unless close $vrdr
420 1 0 if $error
451 32 8 @_ <= 1 ? :
24 8 @_ <= 1 ? :
5 6 @_ <= 1 ? :
32 8 @_ <= 1 ? :
452 0 32 if $@
493 0 0 unless defined $tool_tag
496 0 0 unless defined $cmd_tag
523 0 6 unless ($self->no_def_supp)
525 0 0 if defined $def_supp
578 0 10 unless defined $report
582 0 20 unless defined $report
607 0 2 defined $status ? :