lithium\test\filter\Coverage::collectLines()

public static method

Takes the raw line numbers and returns results with the code from uncovered lines included.

Parameters

  • array $result

    The raw line number results

Returns

array

Source

	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;
	}