Ejemplo n.º 1
0
 /**
  * @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;
 }
Ejemplo n.º 2
0
 /**
  * @param CodeCoverage $coverage
  * @param string       $target
  *
  * @throws RuntimeException
  */
 public function process(CodeCoverage $coverage, $target)
 {
     if (substr($target, -1, 1) != DIRECTORY_SEPARATOR) {
         $target .= DIRECTORY_SEPARATOR;
     }
     $this->target = $target;
     $this->initTargetDirectory($target);
     $report = $coverage->getReport();
     $this->project = new Project($coverage->getReport()->getName());
     $this->processTests($coverage->getTests());
     $this->processDirectory($report, $this->project);
     $index = $this->project->asDom();
     $index->formatOutput = true;
     $index->preserveWhiteSpace = false;
     $index->save($target . '/index.xml');
 }
Ejemplo n.º 3
0
    /**
     * @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;
        }
    }
Ejemplo n.º 4
0
 /**
  * @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()));
 }
Ejemplo n.º 5
0
 /**
  * Merges the data from another instance.
  *
  * @param CodeCoverage $that
  */
 public function merge(CodeCoverage $that)
 {
     $this->filter->setWhitelistedFiles(array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles()));
     foreach ($that->data as $file => $lines) {
         if (!isset($this->data[$file])) {
             if (!$this->filter->isFiltered($file)) {
                 $this->data[$file] = $lines;
             }
             continue;
         }
         foreach ($lines as $line => $data) {
             if ($data !== null) {
                 if (!isset($this->data[$file][$line])) {
                     $this->data[$file][$line] = $data;
                 } else {
                     $this->data[$file][$line] = array_unique(array_merge($this->data[$file][$line], $data));
                 }
             }
         }
     }
     $this->tests = array_merge($this->tests, $that->getTests());
 }