Skip to content

Commit 5034d0f

Browse files
author
Pieter Jordaan
committed
Fixed #12845 adding a listener to an event that is currently being dispatched will not result into a fatal error in TraceableEventDispatcher [EventDispatcher]
1 parent 2148656 commit 5034d0f

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

Tests/Debug/TraceableEventDispatcherTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,24 @@ public function testStopwatchStopControllerOnRequestEvent()
7575
$kernel->handle($request);
7676
}
7777

78+
public function testAddListenerNested()
79+
{
80+
$called1 = false;
81+
$called2 = false;
82+
$dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
83+
$dispatcher->addListener('my-event', function () use ($dispatcher, &$called1, &$called2) {
84+
$called1 = true;
85+
$dispatcher->addListener('my-event', function () use (&$called2) {
86+
$called2 = true;
87+
});
88+
});
89+
$dispatcher->dispatch('my-event');
90+
$this->assertTrue($called1);
91+
$this->assertFalse($called2);
92+
$dispatcher->dispatch('my-event');
93+
$this->assertTrue($called2);
94+
}
95+
7896
protected function getHttpKernel($dispatcher, $controller)
7997
{
8098
$resolver = $this->getMock('Symfony\Component\HttpKernel\Controller\ControllerResolverInterface');

0 commit comments

Comments
 (0)