@@ -40,6 +40,45 @@ public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrue()
40
40
$ kernel ->handle (new Request (), HttpKernelInterface::MAIN_REQUEST , true );
41
41
}
42
42
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 testRequestStackIsNotBrokenWhenControllerThrowsAnExceptionAndCatchIsFalse ()
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 testRequestStackIsNotBrokenWhenControllerThrowsAnThrowable ()
70
+ {
71
+ $ requestStack = new RequestStack ();
72
+ $ kernel = $ this ->getHttpKernel (new EventDispatcher (), function () { throw new \Error (); }, $ 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
+
43
82
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered ()
44
83
{
45
84
$ this ->expectException (\RuntimeException::class);
0 commit comments