@@ -42,10 +42,7 @@ public final class FakeProcessController: ProcessController {
42
42
43
43
public func send( signal: Int32 ) {
44
44
signalsSent. append ( signal)
45
-
46
- for listener in signalListeners {
47
- listener ( self , signal, { } )
48
- }
45
+ broadcastSignal ( signal)
49
46
}
50
47
51
48
public func signalAndForceKillIfNeeded(
@@ -54,7 +51,15 @@ public final class FakeProcessController: ProcessController {
54
51
onKill: @escaping ( ) -> ( )
55
52
) {
56
53
send ( signal: terminationSignal)
57
- overridedProcessStatus = . terminated( exitCode: terminationSignal)
54
+ invokeTerminationProcedures ( exitCode: terminationSignal)
55
+ onKill ( )
56
+ }
57
+
58
+ public func invokeTerminationProcedures(
59
+ exitCode: Int32 = 0
60
+ ) {
61
+ overridedProcessStatus = . terminated( exitCode: exitCode)
62
+ broadcastTermination ( )
58
63
}
59
64
60
65
public var startListeners = [ StartListener] ( )
@@ -87,7 +92,7 @@ public final class FakeProcessController: ProcessController {
87
92
stderrListeners. forEach { $0 ( self , data, { } ) }
88
93
}
89
94
90
- // Silence
95
+ // Signalling
91
96
92
97
public var signalListeners = [ SignalListener] ( )
93
98
@@ -99,9 +104,15 @@ public final class FakeProcessController: ProcessController {
99
104
signalListeners. forEach { $0 ( self , signal, { } ) }
100
105
}
101
106
107
+ // Termination
108
+
102
109
public var terminationListeners = [ TerminationListener] ( )
103
110
104
111
public func onTermination( listener: @escaping TerminationListener ) {
105
112
terminationListeners. append ( listener)
106
113
}
114
+
115
+ public func broadcastTermination( ) {
116
+ terminationListeners. forEach { $0 ( self , { } ) }
117
+ }
107
118
}
0 commit comments