ok
Direktori : /home2/selectio/www/3-idiots/vendor/phpunit/phpunit/src/Runner/Extension/ |
Current File : /home2/selectio/www/3-idiots/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.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\Extension; use function class_exists; use function sprintf; use PHPUnit\Framework\TestListener; use PHPUnit\Runner\Exception; use PHPUnit\Runner\Hook; use PHPUnit\TextUI\TestRunner; use PHPUnit\TextUI\XmlConfiguration\Extension; use ReflectionClass; use ReflectionException; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class ExtensionHandler { /** * @throws Exception */ public function registerExtension(Extension $extensionConfiguration, TestRunner $runner): void { $extension = $this->createInstance($extensionConfiguration); if (!$extension instanceof Hook) { throw new Exception( sprintf( 'Class "%s" does not implement a PHPUnit\Runner\Hook interface', $extensionConfiguration->className() ) ); } $runner->addExtension($extension); } /** * @throws Exception * * @deprecated */ public function createTestListenerInstance(Extension $listenerConfiguration): TestListener { $listener = $this->createInstance($listenerConfiguration); if (!$listener instanceof TestListener) { throw new Exception( sprintf( 'Class "%s" does not implement the PHPUnit\Framework\TestListener interface', $listenerConfiguration->className() ) ); } return $listener; } /** * @throws Exception */ private function createInstance(Extension $extensionConfiguration): object { $this->ensureClassExists($extensionConfiguration); try { $reflector = new ReflectionClass($extensionConfiguration->className()); } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), $e->getCode(), $e ); } if (!$extensionConfiguration->hasArguments()) { return $reflector->newInstance(); } return $reflector->newInstanceArgs($extensionConfiguration->arguments()); } /** * @throws Exception */ private function ensureClassExists(Extension $extensionConfiguration): void { if (class_exists($extensionConfiguration->className(), false)) { return; } if ($extensionConfiguration->hasSourceFile()) { /** * @noinspection PhpIncludeInspection * * @psalm-suppress UnresolvableInclude */ require_once $extensionConfiguration->sourceFile(); } if (!class_exists($extensionConfiguration->className())) { throw new Exception( sprintf( 'Class "%s" does not exist', $extensionConfiguration->className() ) ); } } }