%PDF- %PDF-
Direktori : /home/silvzytp/ccd-ind-code/vendor/phpunit/phpunit/src/Runner/ |
Current File : //home/silvzytp/ccd-ind-code/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.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\Runner; use function is_dir; use function is_file; use function substr; use PHPUnit\Framework\Exception; use PHPUnit\Framework\TestSuite; use ReflectionClass; use ReflectionException; use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ abstract class BaseTestRunner { /** * @var int */ public const STATUS_UNKNOWN = -1; /** * @var int */ public const STATUS_PASSED = 0; /** * @var int */ public const STATUS_SKIPPED = 1; /** * @var int */ public const STATUS_INCOMPLETE = 2; /** * @var int */ public const STATUS_FAILURE = 3; /** * @var int */ public const STATUS_ERROR = 4; /** * @var int */ public const STATUS_RISKY = 5; /** * @var int */ public const STATUS_WARNING = 6; /** * @var string */ public const SUITE_METHODNAME = 'suite'; /** * Returns the loader to be used. */ public function getLoader(): TestSuiteLoader { return new StandardTestSuiteLoader; } /** * Returns the Test corresponding to the given suite. * This is a template method, subclasses override * the runFailed() and clearStatus() methods. * * @param string|string[] $suffixes * * @throws Exception */ public function getTest(string $suiteClassFile, $suffixes = ''): ?TestSuite { if (is_dir($suiteClassFile)) { /** @var string[] $files */ $files = (new FileIteratorFacade)->getFilesAsArray( $suiteClassFile, $suffixes ); $suite = new TestSuite($suiteClassFile); $suite->addTestFiles($files); return $suite; } if (is_file($suiteClassFile) && substr($suiteClassFile, -5, 5) === '.phpt') { $suite = new TestSuite; $suite->addTestFile($suiteClassFile); return $suite; } try { $testClass = $this->loadSuiteClass( $suiteClassFile ); } catch (\PHPUnit\Exception $e) { $this->runFailed($e->getMessage()); return null; } try { $suiteMethod = $testClass->getMethod(self::SUITE_METHODNAME); if (!$suiteMethod->isStatic()) { $this->runFailed( 'suite() method must be static.' ); return null; } $test = $suiteMethod->invoke(null, $testClass->getName()); } catch (ReflectionException $e) { $test = new TestSuite($testClass); } $this->clearStatus(); return $test; } /** * Returns the loaded ReflectionClass for a suite name. */ protected function loadSuiteClass(string $suiteClassFile): ReflectionClass { return $this->getLoader()->load($suiteClassFile); } /** * Clears the status message. */ protected function clearStatus(): void { } /** * Override to define how to handle a failed loading of * a test suite. */ abstract protected function runFailed(string $message): void; }