@@ -1975,6 +1975,21 @@ public function testSignalableCommandInterfaceWithoutSignals()
1975
1975
$ this ->assertSame (0 , $ application ->run (new ArrayInput (['signal ' ])));
1976
1976
}
1977
1977
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
+
1978
1993
/**
1979
1994
* @group tty
1980
1995
*/
@@ -2076,6 +2091,7 @@ public function isEnabled(): bool
2076
2091
class BaseSignableCommand extends Command
2077
2092
{
2078
2093
public $ signaled = false ;
2094
+ public $ signalHandlers = [];
2079
2095
public $ loop = 1000 ;
2080
2096
private $ emitsSignal ;
2081
2097
@@ -2116,6 +2132,7 @@ public function getSubscribedSignals(): array
2116
2132
public function handleSignal (int $ signal ): void
2117
2133
{
2118
2134
$ this ->signaled = true ;
2135
+ $ this ->signalHandlers [] = __CLASS__ ;
2119
2136
}
2120
2137
}
2121
2138
@@ -2127,6 +2144,7 @@ public function onSignal(ConsoleSignalEvent $event): void
2127
2144
{
2128
2145
$ this ->signaled = true ;
2129
2146
$ event ->getCommand ()->signaled = true ;
2147
+ $ event ->getCommand ()->signalHandlers [] = __CLASS__ ;
2130
2148
}
2131
2149
2132
2150
public static function getSubscribedEvents (): array
0 commit comments