2828use Symfony \Component \HttpKernel \HttpKernel ;
2929use Symfony \Component \HttpKernel \HttpKernelInterface ;
3030use Symfony \Component \HttpKernel \KernelEvents ;
31+ use Throwable ;
3132
3233class HttpKernelTest extends TestCase
3334{
@@ -39,6 +40,45 @@ public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrue()
3940 $ kernel ->handle (new Request (), HttpKernelInterface::MASTER_REQUEST , true );
4041 }
4142
43+ public function testRequestStackIsNotBrokenWhenControllerThrowsAnExceptionAndCatchIsTrue ()
44+ {
45+ $ requestStack = new RequestStack ();
46+ $ kernel = $ this ->getHttpKernel (new EventDispatcher (), function () { throw new \RuntimeException (); }, $ requestStack );
47+
48+ try {
49+ $ kernel ->handle (new Request (), HttpKernelInterface::MASTER_REQUEST , true );
50+ } catch (Throwable $ exception ) {
51+ }
52+
53+ self ::assertNull ($ requestStack ->getCurrentRequest ());
54+ }
55+
56+ public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalse ()
57+ {
58+ $ requestStack = new RequestStack ();
59+ $ kernel = $ this ->getHttpKernel (new EventDispatcher (), function () { throw new \RuntimeException (); }, $ requestStack );
60+
61+ try {
62+ $ kernel ->handle (new Request (), HttpKernelInterface::MASTER_REQUEST , false );
63+ } catch (Throwable $ exception ) {
64+ }
65+
66+ self ::assertNull ($ requestStack ->getCurrentRequest ());
67+ }
68+
69+ public function testHandleWhenControllerThrowsAnThrowable ()
70+ {
71+ $ requestStack = new RequestStack ();
72+ $ kernel = $ this ->getHttpKernel (new EventDispatcher (), function () { require __DIR__ .'/syntax_error.php ' ; }, $ requestStack );
73+
74+ try {
75+ $ kernel ->handle (new Request (), HttpKernelInterface::MASTER_REQUEST , true );
76+ } catch (Throwable $ exception ) {
77+ }
78+
79+ self ::assertNull ($ requestStack ->getCurrentRequest ());
80+ }
81+
4282 public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered ()
4383 {
4484 $ this ->expectException (\RuntimeException::class);
0 commit comments