Viewing file: CodeCoverage.php (8.12 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php declare(strict_types=1); /* * This file is part of PHPUnit. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage;
use function count; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\DirectoryCollection; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml; use PHPUnit\TextUI\XmlConfiguration\Directory; use PHPUnit\TextUI\XmlConfiguration\Exception; use PHPUnit\TextUI\XmlConfiguration\FileCollection;
/** * @internal This class is not covered by the backward compatibility promise for PHPUnit * @psalm-immutable */ final class CodeCoverage { /** * @var ?Directory */ private $cacheDirectory;
/** * @var DirectoryCollection */ private $directories;
/** * @var FileCollection */ private $files;
/** * @var DirectoryCollection */ private $excludeDirectories;
/** * @var FileCollection */ private $excludeFiles;
/** * @var bool */ private $pathCoverage;
/** * @var bool */ private $includeUncoveredFiles;
/** * @var bool */ private $processUncoveredFiles;
/** * @var bool */ private $ignoreDeprecatedCodeUnits;
/** * @var bool */ private $disableCodeCoverageIgnore;
/** * @var ?Clover */ private $clover;
/** * @var ?Cobertura */ private $cobertura;
/** * @var ?Crap4j */ private $crap4j;
/** * @var ?Html */ private $html;
/** * @var ?Php */ private $php;
/** * @var ?Text */ private $text;
/** * @var ?Xml */ private $xml;
public function __construct(?Directory $cacheDirectory, DirectoryCollection $directories, FileCollection $files, DirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $pathCoverage, bool $includeUncoveredFiles, bool $processUncoveredFiles, bool $ignoreDeprecatedCodeUnits, bool $disableCodeCoverageIgnore, ?Clover $clover, ?Cobertura $cobertura, ?Crap4j $crap4j, ?Html $html, ?Php $php, ?Text $text, ?Xml $xml) { $this->cacheDirectory = $cacheDirectory; $this->directories = $directories; $this->files = $files; $this->excludeDirectories = $excludeDirectories; $this->excludeFiles = $excludeFiles; $this->pathCoverage = $pathCoverage; $this->includeUncoveredFiles = $includeUncoveredFiles; $this->processUncoveredFiles = $processUncoveredFiles; $this->ignoreDeprecatedCodeUnits = $ignoreDeprecatedCodeUnits; $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; $this->clover = $clover; $this->cobertura = $cobertura; $this->crap4j = $crap4j; $this->html = $html; $this->php = $php; $this->text = $text; $this->xml = $xml; }
/** * @psalm-assert-if-true !null $this->cacheDirectory */ public function hasCacheDirectory(): bool { return $this->cacheDirectory !== null; }
/** * @throws Exception */ public function cacheDirectory(): Directory { if (!$this->hasCacheDirectory()) { throw new Exception( 'No cache directory has been configured' ); }
return $this->cacheDirectory; }
public function hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport(): bool { return count($this->directories) > 0 || count($this->files) > 0; }
public function directories(): DirectoryCollection { return $this->directories; }
public function files(): FileCollection { return $this->files; }
public function excludeDirectories(): DirectoryCollection { return $this->excludeDirectories; }
public function excludeFiles(): FileCollection { return $this->excludeFiles; }
public function pathCoverage(): bool { return $this->pathCoverage; }
public function includeUncoveredFiles(): bool { return $this->includeUncoveredFiles; }
public function ignoreDeprecatedCodeUnits(): bool { return $this->ignoreDeprecatedCodeUnits; }
public function disableCodeCoverageIgnore(): bool { return $this->disableCodeCoverageIgnore; }
public function processUncoveredFiles(): bool { return $this->processUncoveredFiles; }
/** * @psalm-assert-if-true !null $this->clover */ public function hasClover(): bool { return $this->clover !== null; }
/** * @throws Exception */ public function clover(): Clover { if (!$this->hasClover()) { throw new Exception( 'Code Coverage report "Clover XML" has not been configured' ); }
return $this->clover; }
/** * @psalm-assert-if-true !null $this->cobertura */ public function hasCobertura(): bool { return $this->cobertura !== null; }
/** * @throws Exception */ public function cobertura(): Cobertura { if (!$this->hasCobertura()) { throw new Exception( 'Code Coverage report "Cobertura XML" has not been configured' ); }
return $this->cobertura; }
/** * @psalm-assert-if-true !null $this->crap4j */ public function hasCrap4j(): bool { return $this->crap4j !== null; }
/** * @throws Exception */ public function crap4j(): Crap4j { if (!$this->hasCrap4j()) { throw new Exception( 'Code Coverage report "Crap4J" has not been configured' ); }
return $this->crap4j; }
/** * @psalm-assert-if-true !null $this->html */ public function hasHtml(): bool { return $this->html !== null; }
/** * @throws Exception */ public function html(): Html { if (!$this->hasHtml()) { throw new Exception( 'Code Coverage report "HTML" has not been configured' ); }
return $this->html; }
/** * @psalm-assert-if-true !null $this->php */ public function hasPhp(): bool { return $this->php !== null; }
/** * @throws Exception */ public function php(): Php { if (!$this->hasPhp()) { throw new Exception( 'Code Coverage report "PHP" has not been configured' ); }
return $this->php; }
/** * @psalm-assert-if-true !null $this->text */ public function hasText(): bool { return $this->text !== null; }
/** * @throws Exception */ public function text(): Text { if (!$this->hasText()) { throw new Exception( 'Code Coverage report "Text" has not been configured' ); }
return $this->text; }
/** * @psalm-assert-if-true !null $this->xml */ public function hasXml(): bool { return $this->xml !== null; }
/** * @throws Exception */ public function xml(): Xml { if (!$this->hasXml()) { throw new Exception( 'Code Coverage report "XML" has not been configured' ); }
return $this->xml; } }
|