public function run($input, $output = 'real-coverage-html') { $report = unserialize(file_get_contents($input)); $reader = new ParsingCoverageReader(); $classes = $reader->parseReport($report); $mutator = new Mutator(); $testRunner = new PHPUnitRunner(new MultirunTestCommand(), array('tests', 'tests')); $writer = new RealCoverageModifier($report); $proxyFactory = new ProxyFactory($classes); $autoloader = new ProxyAutoloader($proxyFactory); $autoloader->register(); $classCounter = 0; /** @var ClassMetadata $class */ foreach ($classes as $class) { if (!$class->isCovered()) { continue; } echo "\n" . (int) (++$classCounter * 100 / count($classes)) . "%: Processing " . $class->getName() . "\n"; $this->calculateRealCoverage($class, $proxyFactory, $testRunner, $mutator); $writer->write($class); } $autoloader->unregister(); echo "\n\nWriting coverage report to " . $output . "\n"; $htmlWriter = new \PHP_CodeCoverage_Report_HTML(); $htmlWriter->process($report, $output); }
/** * @dataProvider executableInformationDataProvider */ public function testPopulateLineAddsExecutableInformation($tests, $executable) { $line = new CoveredLine(""); $reader = new ParsingCoverageReader(); $reader->populateLine($line, $tests); $this->assertEquals($executable, $line->isExecutable()); }
public function testModifierRemovesCoverageFromUnneccessaryLines() { $coverage = $this->generateCoverageForFixture(); $reader = new ParsingCoverageReader(); $classes = $reader->parseReport($coverage); /** @var ClassMetadata $class */ $class = $classes[0]; $this->assertTrue($class->getLine(8)->isCovered()); $class->getLine(8)->setNeccessary(false); $writer = new RealCoverageModifier($coverage); $writer->write($class); $classes = $reader->parseReport($coverage); $class = $classes[0]; $this->assertFalse($class->getLine(8)->isCovered()); $this->assertTrue($class->getLine(9)->isCovered()); $this->assertFalse($class->getLine(10)->isCovered()); $this->assertFalse($class->getLine(10)->isExecutable()); }