/**
  * 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;
 }
示例#2
0
 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()));
 }
示例#4
0
文件: Jobs.php 项目: greggcz/librenms
 /**
  * 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;
 }
示例#5
0
 /**
  * @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]);
 }