%PDF- %PDF-
Direktori : /home/silvzytp/crm-dub-code/vendor/phpunit/phpunit/src/Util/TestDox/ |
Current File : //home/silvzytp/crm-dub-code/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php |
<?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\Util\TestDox; use function get_class; use function in_array; use PHPUnit\Framework\AssertionFailedError; use PHPUnit\Framework\ErrorTestCase; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; use PHPUnit\Framework\WarningTestCase; use PHPUnit\Runner\BaseTestRunner; use PHPUnit\TextUI\ResultPrinter as ResultPrinterInterface; use PHPUnit\Util\Printer; use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ abstract class ResultPrinter extends Printer implements ResultPrinterInterface { /** * @var NamePrettifier */ protected $prettifier; /** * @var string */ protected $testClass = ''; /** * @var int */ protected $testStatus; /** * @var array */ protected $tests = []; /** * @var int */ protected $successful = 0; /** * @var int */ protected $warned = 0; /** * @var int */ protected $failed = 0; /** * @var int */ protected $risky = 0; /** * @var int */ protected $skipped = 0; /** * @var int */ protected $incomplete = 0; /** * @var null|string */ protected $currentTestClassPrettified; /** * @var null|string */ protected $currentTestMethodPrettified; /** * @var array */ private $groups; /** * @var array */ private $excludeGroups; /** * @param resource $out * * @throws \PHPUnit\Framework\Exception */ public function __construct($out = null, array $groups = [], array $excludeGroups = []) { parent::__construct($out); $this->groups = $groups; $this->excludeGroups = $excludeGroups; $this->prettifier = new NamePrettifier; $this->startRun(); } /** * Flush buffer and close output. */ public function flush(): void { $this->doEndClass(); $this->endRun(); parent::flush(); } /** * An error occurred. */ public function addError(Test $test, Throwable $t, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->testStatus = BaseTestRunner::STATUS_ERROR; $this->failed++; } /** * A warning occurred. */ public function addWarning(Test $test, Warning $e, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->testStatus = BaseTestRunner::STATUS_WARNING; $this->warned++; } /** * A failure occurred. */ public function addFailure(Test $test, AssertionFailedError $e, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->testStatus = BaseTestRunner::STATUS_FAILURE; $this->failed++; } /** * Incomplete test. */ public function addIncompleteTest(Test $test, Throwable $t, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->testStatus = BaseTestRunner::STATUS_INCOMPLETE; $this->incomplete++; } /** * Risky test. */ public function addRiskyTest(Test $test, Throwable $t, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->testStatus = BaseTestRunner::STATUS_RISKY; $this->risky++; } /** * Skipped test. */ public function addSkippedTest(Test $test, Throwable $t, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->testStatus = BaseTestRunner::STATUS_SKIPPED; $this->skipped++; } /** * A testsuite started. */ public function startTestSuite(TestSuite $suite): void { } /** * A testsuite ended. */ public function endTestSuite(TestSuite $suite): void { } /** * A test started. * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException */ public function startTest(Test $test): void { if (!$this->isOfInterest($test)) { return; } $class = get_class($test); if ($this->testClass !== $class) { if ($this->testClass !== '') { $this->doEndClass(); } $this->currentTestClassPrettified = $this->prettifier->prettifyTestClass($class); $this->testClass = $class; $this->tests = []; $this->startClass($class); } if ($test instanceof TestCase) { $this->currentTestMethodPrettified = $this->prettifier->prettifyTestCase($test); } $this->testStatus = BaseTestRunner::STATUS_PASSED; } /** * A test ended. */ public function endTest(Test $test, float $time): void { if (!$this->isOfInterest($test)) { return; } $this->tests[] = [$this->currentTestMethodPrettified, $this->testStatus]; $this->currentTestClassPrettified = null; $this->currentTestMethodPrettified = null; } protected function doEndClass(): void { foreach ($this->tests as $test) { $this->onTest($test[0], $test[1] === BaseTestRunner::STATUS_PASSED); } $this->endClass($this->testClass); } /** * Handler for 'start run' event. */ protected function startRun(): void { } /** * Handler for 'start class' event. */ protected function startClass(string $name): void { } /** * Handler for 'on test' event. */ protected function onTest(string $name, bool $success = true): void { } /** * Handler for 'end class' event. */ protected function endClass(string $name): void { } /** * Handler for 'end run' event. */ protected function endRun(): void { } private function isOfInterest(Test $test): bool { if (!$test instanceof TestCase) { return false; } if ($test instanceof ErrorTestCase || $test instanceof WarningTestCase) { return false; } if (!empty($this->groups)) { foreach ($test->getGroups() as $group) { if (in_array($group, $this->groups, true)) { return true; } } return false; } if (!empty($this->excludeGroups)) { foreach ($test->getGroups() as $group) { if (in_array($group, $this->excludeGroups, true)) { return false; } } return true; } return true; } }