Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new optional clover-html formatter. #1436

Merged
merged 8 commits into from
Nov 25, 2020
4 changes: 4 additions & 0 deletions classes/phing/tasks/ext/phpunit/FormatterElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,13 @@ public function getFormatter()
}

if ($this->type === "summary") {
$this->useFile = false; // Summary formatter never writes to a file
$this->formatter = new SummaryPHPUnitResultFormatter7($this->parent);
} elseif ($this->type === "clover") {
$this->formatter = new CloverPHPUnitResultFormatter7($this->parent);
} elseif ($this->type === "clover-html") {
$this->useFile = false; // Clover HTML formatter never writes to a single file
$this->formatter = new CloverHtmlPHPUnitResultFormatter9($this->parent, $this->toDir);
} elseif ($this->type === "xml") {
$this->formatter = new XMLPHPUnitResultFormatter7($this->parent);
} elseif ($this->type === "plain") {
Expand Down
70 changes: 64 additions & 6 deletions classes/phing/tasks/ext/phpunit/PHPUnitTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ class PHPUnitTask extends Task
*/
private $configuration = null;

/**
* @var \PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage
*/
private $codeCoverageConfig = null;

/**
* Initialize Task.
* This method includes any necessary PHPUnit libraries and triggers
Expand Down Expand Up @@ -420,6 +425,7 @@ protected function handlePHPUnitConfiguration(PhingFile $configuration)
}
}

$this->codeCoverageConfig = $config->codeCoverage();
return $phpunit;
}

Expand Down Expand Up @@ -504,12 +510,24 @@ class_exists('\PHPUnit\Runner\Version', false) &&
$this->processIsolation
);
} else {
$runner = new PHPUnitTestRunner8(
$this->project,
$this->groups,
$this->excludeGroups,
$this->processIsolation
);
if (
class_exists('\PHPUnit\Runner\Version', false) &&
version_compare(\PHPUnit\Runner\Version::id(), '9.0.0', '<')
) {
$runner = new PHPUnitTestRunner8(
$this->project,
$this->groups,
$this->excludeGroups,
$this->processIsolation
);
} else {
$runner = new PHPUnitTestRunner9(
$this->project,
$this->groups,
$this->excludeGroups,
$this->processIsolation
);
}
}

if ($this->codecoverage) {
Expand All @@ -525,8 +543,48 @@ class_exists('\PHPUnit\Runner\Version', false) &&
$filter->addDirectoryToBlacklist($path);
}
if (class_exists('\SebastianBergmann\CodeCoverage\CodeCoverage')) {
if (null !== $this->codeCoverageConfig) {
// Update filters
foreach ($this->codeCoverageConfig->files()->asArray() as $file) {
$filter->includeFile($file->path());
}
foreach ($this->codeCoverageConfig->directories()->asArray() as $dir) {
$filter->includeDirectory($dir->path(), $dir->suffix(), $dir->prefix());
}
foreach ($this->codeCoverageConfig->excludeFiles()->asArray() as $file) {
$filter->excludeFile($file->path());
}
foreach ($this->codeCoverageConfig->excludeDirectories()->asArray() as $dir) {
$filter->excludeDirectory($dir->path(), $dir->suffix(), $dir->prefix());
}
}

if (null !== $this->codeCoverageConfig && $this->codeCoverageConfig->pathCoverage()) {
$driver = (new \SebastianBergmann\CodeCoverage\Driver\Selector())->forLineAndPathCoverage($filter);
} else {
$driver = (new \SebastianBergmann\CodeCoverage\Driver\Selector())->forLineCoverage($filter);
}

$driver = (new \SebastianBergmann\CodeCoverage\Driver\Selector())->forLineCoverage($filter);
$codeCoverage = new \SebastianBergmann\CodeCoverage\CodeCoverage($driver, $filter);

if (null !== $this->codeCoverageConfig) {
// Set code coverage configuration
if ($this->codeCoverageConfig->hasCacheDirectory()) {
$codeCoverage->cacheStaticAnalysis($this->codeCoverageConfig->cacheDirectory()->path());
}
if ($this->codeCoverageConfig->ignoreDeprecatedCodeUnits()) {
$codeCoverage->ignoreDeprecatedCode();
} else {
$codeCoverage->doNotIgnoreDeprecatedCode();
}
if ($this->codeCoverageConfig->includeUncoveredFiles()) {
$codeCoverage->includeUncoveredFiles();
} else {
$codeCoverage->doNotProcessUncoveredFiles();
}
}

$runner->setCodecoverage($codeCoverage);
}
}
Expand Down
Loading