Devel-QuickCover
view release on metacpan or search on metacpan
lib/Devel/QuickCover/Report.pm view on Meta::CPAN
changes => 0,
}, $class;
return $self;
}
sub load {
my ($self, $file) = @_;
my $data = path($file)->slurp_raw;
my $decoded = Sereal::decode_sereal($data);
if (exists $decoded->{files}) {
$self->{data} = $decoded;
} else {
$self->{data} = {
files => $decoded,
metadata => {},
};
}
$self->{changes} = 0;
}
sub save {
my ($self, $file) = @_;
my $encoded = Sereal::encode_sereal($self->{data});
path($file)->spew_raw($encoded);
$self->{changes} = 0;
}
sub merge {
my ($self, $file) = @_;
my $json = path($file)->slurp;
my $decoded = decode_json($json);
my $files = $self->{data}{files};
my $subs = $self->{data}{subs};
# I don't think custom merging functions are needed
@{$self->{data}{metadata}}{keys %{$decoded->{metadata}}} =
values %{$decoded->{metadata}};
for my $name (keys %{$decoded->{files}}) {
my $coverage = $decoded->{files}{$name};
for my $line (@{$coverage->{covered}}) {
$files->{$name}->{$line}++;
}
for my $line (@{$coverage->{present}}) {
$files->{$name}->{$line} //= 0;
}
for my $sub (keys %{$coverage->{subs}}) {
$subs->{$name}->{$sub} ||= $coverage->{subs}->{$sub};
}
$self->{changes} += @{$coverage->{covered}};
t/lib/Test.pm view on Meta::CPAN
my @files = glob("$path/QC_*");
ok(@files == 1, "Report exists at $path")
or return;
my ($fname) = @files;
my $json = path($fname)->slurp
or return;
my $decoded = decode_json($json)
or return;
return $fname, $decoded;
}
sub get_coverage_from_report {
my ($file, $report) = @_;
my $lines = $report->{files}{$file};
return $lines;
}
( run in 0.287 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )