Вход Регистрация
Файл: gapps/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php
Строк: 310
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentDebugTestsFatalErrorHandler;

use 
SymfonyComponentDebugExceptionFatalErrorException;
use 
SymfonyComponentClassLoaderClassLoader as SymfonyClassLoader;
use 
SymfonyComponentDebugFatalErrorHandlerClassNotFoundFatalErrorHandler;
use 
SymfonyComponentDebugDebugClassLoader;
use 
ComposerAutoloadClassLoader as ComposerClassLoader;

class 
ClassNotFoundFatalErrorHandlerTest extends PHPUnit_Framework_TestCase
{
    public static function 
setUpBeforeClass()
    {
        foreach (
spl_autoload_functions() as $function) {
            if (!
is_array($function)) {
                continue;
            }

            
// get class loaders wrapped by DebugClassLoader
            
if ($function[0] instanceof DebugClassLoader) {
                
$function $function[0]->getClassLoader();
            }

            if (
$function[0] instanceof ComposerClassLoader) {
                
$function[0]->add('Symfony_Component_Debug_Tests_Fixtures'dirname(dirname(dirname(dirname(dirname(__DIR__))))));
                break;
            }
        }
    }

    
/**
     * @dataProvider provideClassNotFoundData
     */
    
public function testHandleClassNotFound($error$translatedMessage$autoloader null)
    {
        if (
$autoloader) {
            
// Unregister all autoloaders to ensure the custom provided
            // autoloader is the only one to be used during the test run.
            
$autoloaders spl_autoload_functions();
            
array_map('spl_autoload_unregister'$autoloaders);
            
spl_autoload_register($autoloader);
        }

        
$handler = new ClassNotFoundFatalErrorHandler();

        
$exception $handler->handleError($error, new FatalErrorException(''0$error['type'], $error['file'], $error['line']));

        if (
$autoloader) {
            
spl_autoload_unregister($autoloader);
            
array_map('spl_autoload_register'$autoloaders);
        }

        
$this->assertInstanceOf('SymfonyComponentDebugExceptionClassNotFoundException'$exception);
        
$this->assertSame($translatedMessage$exception->getMessage());
        
$this->assertSame($error['type'], $exception->getSeverity());
        
$this->assertSame($error['file'], $exception->getFile());
        
$this->assertSame($error['line'], $exception->getLine());
    }

    public function 
provideClassNotFoundData()
    {
        
$prefixes = array('SymfonyComponentDebugException\' => realpath(__DIR__.'/../../Exception'));

        $symfonyAutoloader = new SymfonyClassLoader();
        $symfonyAutoloader->addPrefixes($prefixes);

        $debugClassLoader = new DebugClassLoader(array($symfonyAutoloader, '
loadClass'));

        return array(
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'WhizBangFactory' not found',
                ),
                "Attempted to load class "WhizBangFactory" from the global namespace.nDid you forget a "use" statement?",
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'Foo\Bar\WhizBangFactory' not found',
                ),
                "Attempted to load class "WhizBangFactory" from namespace "Foo\Bar".nDid you forget a "use" statement for another namespace?",
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'UndefinedFunctionException' not found',
                ),
                "Attempted to load class "UndefinedFunctionException" from the global namespace.nDid you forget a "use" statement for "SymfonyComponentDebugExceptionUndefinedFunctionException"?",
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'PEARClass' not found',
                ),
                "Attempted to load class "PEARClass" from the global namespace.nDid you forget a "use" statement for "Symfony_Component_Debug_Tests_Fixtures_PEARClass"?",
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'Foo\Bar\UndefinedFunctionException' not found',
                ),
                "Attempted to load class "UndefinedFunctionException" from namespace "FooBar".nDid you forget a "use" statement for "SymfonyComponentDebugExceptionUndefinedFunctionException"?",
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'Foo\Bar\UndefinedFunctionException' not found',
                ),
                "Attempted to load class "UndefinedFunctionException" from namespace "FooBar".nDid you forget a "use" statement for "SymfonyComponentDebugExceptionUndefinedFunctionException"?",
                array($symfonyAutoloader, '
loadClass'),
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'Foo\Bar\UndefinedFunctionException' not found',
                ),
                "Attempted to load class "UndefinedFunctionException" from namespace "FooBar".nDid you forget a "use" statement for "SymfonyComponentDebugExceptionUndefinedFunctionException"?",
                array($debugClassLoader, '
loadClass'),
            ),
            array(
                array(
                    '
type' => 1,
                    '
line' => 12,
                    '
file' => 'foo.php',
                    '
message' => 'Class 'Foo\Bar\UndefinedFunctionException' not found',
                ),
                "Attempted to load class "UndefinedFunctionException" from namespace "Foo\Bar".nDid you forget a "use" statement for another namespace?",
                function ($className) { /* do nothing here */ },
            ),
        );
    }

    public function testCannotRedeclareClass()
    {
        if (!file_exists(__DIR__.'
/../FIXTURES2/REQUIREDTWICE.PHP')) {
            $this->markTestSkipped('
Can only be run on case insensitive filesystems');
        }

        require_once __DIR__.'
/../FIXTURES2/REQUIREDTWICE.PHP';

        $error = array(
            '
type' => 1,
            '
line' => 12,
            '
file' => 'foo.php',
            '
message' => 'Class 'Foo\Bar\RequiredTwice' not found',
        );

        $handler = new ClassNotFoundFatalErrorHandler();
        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['
type'], $error['file'], $error['line']));

        $this->assertInstanceOf('
SymfonyComponentDebugExceptionClassNotFoundException', $exception);
    }
}
Онлайн: 0
Реклама