/** * Collect coverage data. * * @param SimpleXMLElement $file Clover XML object of a file. * @param string $path Path to source file. * @param string $filename Filename. * @return \Contrib\Bundle\CoverallsV1Bundle\Entity\SourceFile */ protected function collectCoverage(\SimpleXMLElement $file, $path, $filename) { if ($this->jsonFile->hasSourceFile($path)) { $srcFile = $this->jsonFile->getSourceFile($path); } else { $srcFile = new SourceFile($path, $filename); } foreach ($file->line as $line) { if ((string) $line['type'] === 'stmt') { $lineNum = (int) $line['num']; if ($lineNum > 0) { $srcFile->addCoverage($lineNum - 1, (int) $line['count']); } } } return $srcFile; }
public function getRunAt() { return strtotime(parent::getRunAt()); }
/** * Log collected source files. * * @param JsonFile $jsonFile * @return void */ protected function logCollectedSourceFiles(JsonFile $jsonFile) { // @codeCoverageIgnoreStart $color = function ($coverage, $format) { // green 90% - 100% <info> // yellow 80% - 90% <comment> // red 0% - 80% <fg=red> if ($coverage >= 90) { return sprintf('<info>%s</info>', $format); } elseif ($coverage >= 80) { return sprintf('<comment>%s</comment>', $format); } else { return sprintf('<fg=red>%s</fg=red>', $format); } }; // @codeCoverageIgnoreEnd $sourceFiles = $jsonFile->getSourceFiles(); $numFiles = count($sourceFiles); $this->logger->info(sprintf('Found <info>%s</info> source file%s:', number_format($numFiles), $numFiles > 1 ? 's' : '')); foreach ($sourceFiles as $sourceFile) { /* @var $sourceFile \Contrib\Bundle\CoverallsV1Bundle\Entity\SourceFile */ $coverage = $sourceFile->reportLineCoverage(); $template = ' - ' . $color($coverage, '%6.2f%%') . ' %s'; $this->logger->info(sprintf($template, $coverage, $sourceFile->getName())); } $coverage = $jsonFile->reportLineCoverage(); $template = 'Coverage: ' . $color($coverage, '%6.2f%% (%d/%d)'); $metrics = $jsonFile->getMetrics(); $this->logger->info(sprintf($template, $coverage, $metrics->getCoveredStatements(), $metrics->getStatements())); }
/** * Collect environment variables. * * @param array $env $_SERVER environment. * @return \Contrib\Bundle\CoverallsV1Bundle\Api\Jobs */ public function collectEnvVars(array $env) { $envCollector = new CiEnvVarsCollector($this->config); $this->jsonFile->fillJobs($envCollector->collect($env)); return $this; }
/** * @test * @depends shouldHaveJsonFileAfterCollectGitInfo */ public function shouldHaveGitAfterCollectGitInfo(JsonFile $jsonFile) { $git = $jsonFile->getGit(); $this->assertNotNull($git); }
/** * @test * @depends collectSourceFiles */ public function collectSourceFileTest2(JsonFile $jsonFile) { $sourceFiles = $jsonFile->getSourceFiles(); $name2 = 'test2.php'; $path2 = $this->rootDir . DIRECTORY_SEPARATOR . $name2; $this->assertArrayHasKey($path2, $sourceFiles); $this->assertSourceFileTest2($sourceFiles[$path2]); }