* * 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:----uZpF7O7w3MqX46MwbNEb6qgjBmrDk9QdSEJpe+iJXfxLTEd5vCJNamPONQRLg5puydn3mijJZHrK1As+QvMwsZymMnBwUsLDbDIoUQUGZ+hErn4VI4mAMluE+gZLjwb2E7QcrB6jIeZ89qlTFQaLvrkFnJWWlkHlSuSzDsg4aPB85/tKAOrGcDJJIAazHGVJVAC9v+AHZKLwamoZ4pUjn/dx53Ae+mwIkDxhKpDm0/Vqgu3tD6KY1pfXS4GzL2JZ2zRO9v6ZJExpGMVNdTP9fiTE9qluBM5LTM7tQ+LSMnx4WU6nG0xhjdscs605PCmWtk5vfA/d1zKxw6IMlWT+aauAzONJ159y8CQmtZup8zgCLczooJ0gBhlxXUHrLHU068+7TgdPh+cfce//8DOJjRSoEY5IYwpD4CYIZhQmtuQBkBGtUBB/clRRwEsy2BuAHz0nCZxr+AJOR16AspbLTfXvVwhQj829bjj4TT+KHjCC7n/J6ViaORhHxPVu0jMeTDvVRfqLSYj/fDw3aIoERUT3IyJD4oTqvXPeDVGvJpgHcRzsSgWr7GhYcZhylIV2J74INVs8rQOZk3vDklh+mUghHG6VjyXHy1t72VX1wcueAS/3mwT9ojCTwrGCTAoyIf2nJtDieYLtStmr7OeSW5Ydj1KxyWp36WlrowFI/Uc=----ATTACHMENT:----NTc1NzIyNjg2MDYzNjM0NCA0NzkyMTI3MDg0MTAxNTYzIDc1NjY2NzM5MDcyMjc3Mjg=