Вход Регистрация
Файл: gapps/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
Строк: 59
<?php
/*
 * 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.
 */

/**
 * The standard test suite loader.
 *
 * @since Class available since Release 2.0.0
 */
class PHPUnit_Runner_StandardTestSuiteLoader implements PHPUnit_Runner_TestSuiteLoader
{
    
/**
     * @param string $suiteClassName
     * @param string $suiteClassFile
     *
     * @return ReflectionClass
     *
     * @throws PHPUnit_Framework_Exception
     */
    
public function load($suiteClassName$suiteClassFile '')
    {
        
$suiteClassName str_replace('.php'''$suiteClassName);

        if (empty(
$suiteClassFile)) {
            
$suiteClassFile PHPUnit_Util_Filesystem::classNameToFilename(
                
$suiteClassName
            
);
        }

        if (!
class_exists($suiteClassNamefalse)) {
            
$loadedClasses get_declared_classes();

            
$filename PHPUnit_Util_Fileloader::checkAndLoad($suiteClassFile);

            
$loadedClasses array_values(
                
array_diff(get_declared_classes(), $loadedClasses)
            );
        }

        if (!
class_exists($suiteClassNamefalse) && !empty($loadedClasses)) {
            
$offset strlen($suiteClassName);

            foreach (
$loadedClasses as $loadedClass) {
                
$class = new ReflectionClass($loadedClass);
                if (
substr($loadedClass$offset) === $suiteClassName &&
                    
$class->getFileName() == $filename) {
                    
$suiteClassName $loadedClass;
                    break;
                }
            }
        }

        if (!
class_exists($suiteClassNamefalse) && !empty($loadedClasses)) {
            
$testCaseClass 'PHPUnit_Framework_TestCase';

            foreach (
$loadedClasses as $loadedClass) {
                
$class     = new ReflectionClass($loadedClass);
                
$classFile $class->getFileName();

                if (
$class->isSubclassOf($testCaseClass) &&
                    !
$class->isAbstract()) {
                    
$suiteClassName $loadedClass;
                    
$testCaseClass  $loadedClass;

                    if (
$classFile == realpath($suiteClassFile)) {
                        break;
                    }
                }

                if (
$class->hasMethod('suite')) {
                    
$method $class->getMethod('suite');

                    if (!
$method->isAbstract() &&
                        
$method->isPublic() &&
                        
$method->isStatic()) {
                        
$suiteClassName $loadedClass;

                        if (
$classFile == realpath($suiteClassFile)) {
                            break;
                        }
                    }
                }
            }
        }

        if (
class_exists($suiteClassNamefalse)) {
            
$class = new ReflectionClass($suiteClassName);

            if (
$class->getFileName() == realpath($suiteClassFile)) {
                return 
$class;
            }
        }

        throw new 
PHPUnit_Framework_Exception(
            
sprintf(
                
"Class '%s' could not be found in '%s'.",
                
$suiteClassName,
                
$suiteClassFile
            
)
        );
    }

    
/**
     * @param ReflectionClass $aClass
     *
     * @return ReflectionClass
     */
    
public function reload(ReflectionClass $aClass)
    {
        return 
$aClass;
    }
}
Онлайн: 0
Реклама