@@ -1975,6 +1975,21 @@ public function testSignalableCommandInterfaceWithoutSignals()
19751975 $ this ->assertSame (0 , $ application ->run (new ArrayInput (['signal ' ])));
19761976 }
19771977
1978+ public function testSignalableCommandHandlerCalledAfterEventListener ()
1979+ {
1980+ $ command = new SignableCommand ();
1981+
1982+ $ subscriber = new SignalEventSubscriber ();
1983+
1984+ $ dispatcher = new EventDispatcher ();
1985+ $ dispatcher ->addSubscriber ($ subscriber );
1986+
1987+ $ application = $ this ->createSignalableApplication ($ command , $ dispatcher );
1988+ $ application ->setSignalsToDispatchEvent (\SIGUSR1 );
1989+ $ this ->assertSame (1 , $ application ->run (new ArrayInput (['signal ' ])));
1990+ $ this ->assertSame ([SignalEventSubscriber::class, SignableCommand::class], $ command ->signalHandlers );
1991+ }
1992+
19781993 /**
19791994 * @group tty
19801995 */
@@ -2076,6 +2091,7 @@ public function isEnabled(): bool
20762091class BaseSignableCommand extends Command
20772092{
20782093 public $ signaled = false ;
2094+ public $ signalHandlers = [];
20792095 public $ loop = 1000 ;
20802096 private $ emitsSignal ;
20812097
@@ -2116,6 +2132,7 @@ public function getSubscribedSignals(): array
21162132 public function handleSignal (int $ signal ): void
21172133 {
21182134 $ this ->signaled = true ;
2135+ $ this ->signalHandlers [] = __CLASS__ ;
21192136 }
21202137}
21212138
@@ -2127,6 +2144,7 @@ public function onSignal(ConsoleSignalEvent $event): void
21272144 {
21282145 $ this ->signaled = true ;
21292146 $ event ->getCommand ()->signaled = true ;
2147+ $ event ->getCommand ()->signalHandlers [] = __CLASS__ ;
21302148 }
21312149
21322150 public static function getSubscribedEvents (): array
0 commit comments