当前路径:vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.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 PHPUnit\Framework\TestCase; use PHPUnit\Util\FileLoader; use PHPUnit\Util\Filesystem; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class StandardTestSuiteLoader implements TestSuiteLoader { /** * @throws Exception * @throws \PHPUnit\Framework\Exception */ public function load(string $suiteClassName, string $suiteClassFile = ''): \ReflectionClass { $suiteClassName = \str_replace('.php', '', $suiteClassName); $filename = null; if (empty($suiteClassFile)) { $suiteClassFile = Filesystem::classNameToFilename( $suiteClassName ); } if (!\class_exists($suiteClassName, false)) { $loadedClasses = \get_declared_classes(); $filename = FileLoader::checkAndLoad($suiteClassFile); $loadedClasses = \array_values( \array_diff(\get_declared_classes(), $loadedClasses) ); } if (!empty($loadedClasses) && !\class_exists($suiteClassName, false)) { $offset = 0 - \strlen($suiteClassName); foreach ($loadedClasses as $loadedClass) { try { $class = new \ReflectionClass($loadedClass); // @codeCoverageIgnoreStart } catch (\ReflectionException $e) { throw new Exception( $e->getMessage(), (int) $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if (\substr($loadedClass, $offset) === $suiteClassName && $class->getFileName() == $filename) { $suiteClassName = $loadedClass; break; } } } if (!empty($loadedClasses) && !\class_exists($suiteClassName, false)) { $testCaseClass = TestCase::class; foreach ($loadedClasses as $loadedClass) { try { $class = new \ReflectionClass($loadedClass); // @codeCoverageIgnoreStart } catch (\ReflectionException $e) { throw new Exception( $e->getMessage(), (int) $e->getCode(), $e ); } // @codeCoverageIgnoreEnd $classFile = $class->getFileName(); if ($class->isSubclassOf($testCaseClass) && !$class->isAbstract()) { $suiteClassName = $loadedClass; $testCaseClass = $loadedClass; if ($classFile == \realpath($suiteClassFile)) { break; } } if ($class->hasMethod('suite')) { try { $method = $class->getMethod('suite'); // @codeCoverageIgnoreStart } catch (\ReflectionException $e) { throw new Exception( $e->getMessage(), (int) $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) { $suiteClassName = $loadedClass; if ($classFile == \realpath($suiteClassFile)) { break; } } } } } if (\class_exists($suiteClassName, false)) { try { $class = new \ReflectionClass($suiteClassName); // @codeCoverageIgnoreStart } catch (\ReflectionException $e) { throw new Exception( $e->getMessage(), (int) $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if ($class->getFileName() == \realpath($suiteClassFile)) { return $class; } } throw new Exception( \sprintf( "Class '%s' could not be found in '%s'.", $suiteClassName, $suiteClassFile ) ); } public function reload(\ReflectionClass $aClass): \ReflectionClass { return $aClass; } }
相关源码
- 可旋转的彩色立方体C#源代码2021-10-29
- 在线考试系统2021-10-15
- EduSoho开源网校系统源码2019-06-27
- 仿拼多多小程序商城源码2019-06-06
- PHP5网站运行监测系统源码2017-04-14
关于我们 | 顾问团队 | 发展历程 | 联系我们 | 源码上传
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号