/** * @param CodeCoverage $coverage * * @return Directory */ public function build(CodeCoverage $coverage) { $files = $coverage->getData(); $commonPath = $this->reducePaths($files); $root = new Directory($commonPath, null); $this->addItems($root, $this->buildDirectoryStructure($files), $coverage->getTests(), $coverage->getCacheTokens()); return $root; }
/** * @param CodeCoverage $coverage * @param string $target * * @return string */ public function process(CodeCoverage $coverage, $target = null) { $filter = $coverage->filter(); $output = sprintf('<?php $coverage = new SebastianBergmann\\CodeCoverage\\CodeCoverage; $coverage->setData(%s); $coverage->setTests(%s); $filter = $coverage->filter(); $filter->setWhitelistedFiles(%s); return $coverage;', var_export($coverage->getData(true), 1), var_export($coverage->getTests(), 1), var_export($filter->getWhitelistedFiles(), 1)); if ($target !== null) { return file_put_contents($target, $output); } else { return $output; } }
/** * @param CodeCoverage $coverage * @param CodeCoverage $that */ private function mergeCoverage(CodeCoverage $coverage, CodeCoverage $that) { $filter = $coverage->filter(); $filter->setWhitelistedFiles(array_merge($filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles())); $thisData = $coverage->getData(true); $thatData = $that->getData(true); foreach ($thatData as $file => $lines) { if (!$this->hasCoverage($thatData, $file)) { continue; } if (!$this->hasCoverage($thisData, $file)) { if (!$filter->isFiltered($file)) { $thisData[$file] = $lines; } continue; } foreach ($lines as $line => $data) { if ($data !== null) { if (!isset($thisData[$file][$line])) { $thisData[$file][$line] = $data; } else { $thisData[$file][$line] = array_unique(array_merge($thisData[$file][$line], $data)); } } } } $coverage->setData($thisData); $coverage->setTests(array_merge($coverage->getTests(), $that->getTests())); }
public function testMerge2() { $coverage = new CodeCoverage($this->createMock(Xdebug::class), new Filter()); $coverage->merge($this->getCoverageForBankAccount()); $this->assertEquals($this->getExpectedDataArrayForBankAccount(), $coverage->getData()); }