summaryrefslogtreecommitdiff
path: root/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/php-code-coverage/src/Driver/Driver.php')
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/Driver.php167
1 files changed, 167 insertions, 0 deletions
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
new file mode 100644
index 000000000..dc2de68f4
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
@@ -0,0 +1,167 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (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 SebastianBergmann\CodeCoverage\Driver;
+
+use function sprintf;
+use SebastianBergmann\CodeCoverage\BranchAndPathCoverageNotSupportedException;
+use SebastianBergmann\CodeCoverage\DeadCodeDetectionNotSupportedException;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverAvailableException;
+use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverWithPathCoverageSupportAvailableException;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+abstract class Driver
+{
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const LINE_NOT_EXECUTABLE = -2;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const LINE_NOT_EXECUTED = -1;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const LINE_EXECUTED = 1;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const BRANCH_NOT_HIT = 0;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const BRANCH_HIT = 1;
+
+ /**
+ * @var bool
+ */
+ private $collectBranchAndPathCoverage = false;
+
+ /**
+ * @var bool
+ */
+ private $detectDeadCode = false;
+
+ /**
+ * @throws NoCodeCoverageDriverAvailableException
+ * @throws PcovNotAvailableException
+ * @throws PhpdbgNotAvailableException
+ * @throws Xdebug2NotEnabledException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ *
+ * @deprecated Use DriverSelector::forLineCoverage() instead
+ */
+ public static function forLineCoverage(Filter $filter): self
+ {
+ return (new Selector)->forLineCoverage($filter);
+ }
+
+ /**
+ * @throws NoCodeCoverageDriverWithPathCoverageSupportAvailableException
+ * @throws Xdebug2NotEnabledException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ *
+ * @deprecated Use DriverSelector::forLineAndPathCoverage() instead
+ */
+ public static function forLineAndPathCoverage(Filter $filter): self
+ {
+ return (new Selector)->forLineAndPathCoverage($filter);
+ }
+
+ public function canCollectBranchAndPathCoverage(): bool
+ {
+ return false;
+ }
+
+ public function collectsBranchAndPathCoverage(): bool
+ {
+ return $this->collectBranchAndPathCoverage;
+ }
+
+ /**
+ * @throws BranchAndPathCoverageNotSupportedException
+ */
+ public function enableBranchAndPathCoverage(): void
+ {
+ if (!$this->canCollectBranchAndPathCoverage()) {
+ throw new BranchAndPathCoverageNotSupportedException(
+ sprintf(
+ '%s does not support branch and path coverage',
+ $this->nameAndVersion()
+ )
+ );
+ }
+
+ $this->collectBranchAndPathCoverage = true;
+ }
+
+ public function disableBranchAndPathCoverage(): void
+ {
+ $this->collectBranchAndPathCoverage = false;
+ }
+
+ public function canDetectDeadCode(): bool
+ {
+ return false;
+ }
+
+ public function detectsDeadCode(): bool
+ {
+ return $this->detectDeadCode;
+ }
+
+ /**
+ * @throws DeadCodeDetectionNotSupportedException
+ */
+ public function enableDeadCodeDetection(): void
+ {
+ if (!$this->canDetectDeadCode()) {
+ throw new DeadCodeDetectionNotSupportedException(
+ sprintf(
+ '%s does not support dead code detection',
+ $this->nameAndVersion()
+ )
+ );
+ }
+
+ $this->detectDeadCode = true;
+ }
+
+ public function disableDeadCodeDetection(): void
+ {
+ $this->detectDeadCode = false;
+ }
+
+ abstract public function nameAndVersion(): string;
+
+ abstract public function start(): void;
+
+ abstract public function stop(): RawCodeCoverageData;
+}