* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\EventListener; use PHPUnit\Framework\TestCase; use Psr\Log\LogLevel; use Symfony\Component\Console\Event\ConsoleEvent; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\ConsoleEvents; use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Debug\ErrorHandler; use Symfony\Component\Debug\ExceptionHandler; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\KernelEvents; /** * @author Nicolas Grekas */ class DebugHandlersListenerTest extends TestCase { public function testConfigure() { $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); $userHandler = function () {}; $listener = new DebugHandlersListener($userHandler, $logger); $xHandler = new ExceptionHandler(); $eHandler = new ErrorHandler(); $eHandler->setExceptionHandler(array($xHandler, 'handle')); $exception = null; set_error_handler(array($eHandler, 'handleError')); set_exception_handler(array($eHandler, 'handleException')); try { $listener->configure(); } catch (\Exception $exception) { } restore_exception_handler(); restore_error_handler(); if (null !== $exception) { throw $exception; } $this->assertSame($userHandler, $xHandler->setHandler('var_dump')); $loggers = $eHandler->setLoggers(array()); $this->assertArrayHasKey(E_DEPRECATED, $loggers); $this->assertSame(array($logger, LogLevel::INFO), $loggers[E_DEPRECATED]); } public function testConfigureForHttpKernelWithNoTerminateWithException() { $listener = new DebugHandlersListener(null); $eHandler = new ErrorHandler(); $event = new KernelEvent( $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), Request::create('/'), HttpKernelInterface::MASTER_REQUEST ); $exception = null; $h = set_exception_handler(array($eHandler, 'handleException')); try { $listener->configure($event); } catch (\Exception $exception) { } restore_exception_handler(); if (null !== $exception) { throw $exception; } $this->assertNull($h); } public function testConsoleEvent() { $dispatcher = new EventDispatcher(); $listener = new DebugHandlersListener(null); $app = $this->getMockBuilder('Symfony\Component\Console\Application')->getMock(); $app->expects($this->once())->method('getHelperSet')->will($this->returnValue(new HelperSet())); $command = new Command(__FUNCTION__); $command->setApplication($app); $event = new ConsoleEvent($command, new ArgvInput(), new ConsoleOutput()); $dispatcher->addSubscriber($listener); $xListeners = array( KernelEvents::REQUEST => array(array($listener, 'configure')), ConsoleEvents::COMMAND => array(array($listener, 'configure')), ); $this->assertSame($xListeners, $dispatcher->getListeners()); $exception = null; $eHandler = new ErrorHandler(); set_error_handler(array($eHandler, 'handleError')); set_exception_handler(array($eHandler, 'handleException')); try { $dispatcher->dispatch(ConsoleEvents::COMMAND, $event); } catch (\Exception $exception) { } restore_exception_handler(); restore_error_handler(); if (null !== $exception) { throw $exception; } $xHandler = $eHandler->setExceptionHandler('var_dump'); $this->assertInstanceOf('Closure', $xHandler); $app->expects($this->once()) ->method('renderException'); $xHandler(new \Exception()); } public function testReplaceExistingExceptionHandler() { $userHandler = function () {}; $listener = new DebugHandlersListener($userHandler); $eHandler = new ErrorHandler(); $eHandler->setExceptionHandler('var_dump'); $exception = null; set_exception_handler(array($eHandler, 'handleException')); try { $listener->configure(); } catch (\Exception $exception) { } restore_exception_handler(); if (null !== $exception) { throw $exception; } $this->assertSame($userHandler, $eHandler->setExceptionHandler('var_dump')); } } __halt_compiler();----SIGNATURE:----n4zy5rkFE9uJzOlobfBpdJhW7Dnt1vAJXQfcj/Vx5y2bqH3kqYnZ57qQjSKy8OrfFI6FF52jd3cOSEUV1AGsBfGGOPRHfJZ8CtNqA1OnzDJHFQFg9r+Y7Ie7kuWNsWHIqC/pfjp3H+eYuXMdnQcDZQohb2h7TZvPgmMlZtjufO/vPfB5/uOTuyaYHWMTOevuDx78VOYmaeoXQ1zPVPuqvW09g+uNLUBP65QIoQq1RBrPxA19Y0YlVBBBhJAGnFpQB2ulRG+ox+6oTWAvxxqO8ODhbcBdN5Mc+OA1f2IdMheecXFPfqlk6Qq1XC/AFiviEJYX6NRpaXkfjRldq4kIwpBWIEa31ieEuPsNzmaS4Om9I/IlH+brvVqGCRsjlhiO/OOwQqxBXBYUFjwSKA6bD5ClsZUdAbsSXRezLWAhmp7v+2K+26o/MamUx5L3C4i0H1hy5Zb4W1l8Tss2cX71NxVF52HeJMPWf5R7xjI1o/PvUOb3lQJYmvSXXDvVGcHEZNtL1YUSe6jh+sVlrAK0IpEtNFB3PYUlM5WOJkxM4sSzpzW29iKJ8DduBQqzRJpcHLLw23FgwgJMEmULjnzfY1hDAzA+cjVwQwu7+m61LBMEEuGrBpxJ6t/79G6T/eVdF6bX564WJqem/AVsNszQ7I2/9B8pBtGzbbyPyqbq5vo=----ATTACHMENT:----OTY5NjIzMjM1MzIzOTAwNSA4MTg4OTE4OTExNzU4MTM0IDY0MDc4NzYwMjE5ODYwNTI=