summaryrefslogtreecommitdiff
path: root/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php')
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php362
1 files changed, 362 insertions, 0 deletions
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php
new file mode 100644
index 000000000..33cbea321
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php
@@ -0,0 +1,362 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * 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;
+ }
+}