lithium\test\filter\Coverage::collectLines()
Takes the raw line numbers and returns results with the code from uncovered lines included.
Parameters
-
array
$result
The raw line number results
Returns
arraySource
public static function collectLines($result) {
$aggregate = ['covered' => 0, 'executable' => 0];
foreach ($result as $class => $coverage) {
$out = [];
$file = Libraries::path($class);
$aggregate['covered'] += count($coverage['covered']);
$aggregate['executable'] += count($coverage['executable']);
$uncovered = array_flip($coverage['uncovered']);
$contents = explode("\n", file_get_contents($file));
array_unshift($contents, ' ');
$count = count($contents);
for ($i = 1; $i <= $count; $i++) {
if (isset($uncovered[$i])) {
if (!isset($out[$i - 2])) {
$out[$i - 2] = [
'class' => 'ignored',
'data' => '...'
];
}
if (!isset($out[$i - 1])) {
$out[$i - 1] = [
'class' => 'covered',
'data' => $contents[$i - 1]
];
}
$out[$i] = [
'class' => 'uncovered',
'data' => $contents[$i]
];
if (!isset($uncovered[$i + 1])) {
$out[$i + 1] = [
'class' => 'covered',
'data' => $contents[$i + 1]
];
}
} elseif (
isset($out[$i - 1]) && $out[$i - 1]['data'] !== '...' &&
!isset($out[$i]) && !isset($out[$i + 1])
) {
$out[$i] = [
'class' => 'ignored',
'data' => '...'
];
}
}
$result[$class]['output'][$file] = $out;
}
return $result;
}