Skip to content

Commit 0511588

Browse files
Vladislav AlekseevAvito iOSBot
authored andcommitted
MBS-13418: clean up FakeProcessController, add process termination flow
GitOrigin-RevId: 136370a0236013eafe37871a967d6786c6798b60
1 parent b1544ce commit 0511588

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

Sources/ProcessController/ProcessController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public extension ProcessController {
8888
}
8989

9090
func interruptAndForceKillIfNeeded(
91-
onKill: @escaping () -> ()
91+
onKill: @escaping () -> () = {}
9292
) {
9393
signalAndForceKillIfNeeded(
9494
terminationSignal: SIGINT,

Tests/ProcessControllerTestHelpers/FakeProcessController.swift

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,7 @@ public final class FakeProcessController: ProcessController {
4242

4343
public func send(signal: Int32) {
4444
signalsSent.append(signal)
45-
46-
for listener in signalListeners {
47-
listener(self, signal, {})
48-
}
45+
broadcastSignal(signal)
4946
}
5047

5148
public func signalAndForceKillIfNeeded(
@@ -54,7 +51,15 @@ public final class FakeProcessController: ProcessController {
5451
onKill: @escaping () -> ()
5552
) {
5653
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()
5863
}
5964

6065
public var startListeners = [StartListener]()
@@ -87,7 +92,7 @@ public final class FakeProcessController: ProcessController {
8792
stderrListeners.forEach { $0(self, data, { }) }
8893
}
8994

90-
// Silence
95+
// Signalling
9196

9297
public var signalListeners = [SignalListener]()
9398

@@ -99,9 +104,15 @@ public final class FakeProcessController: ProcessController {
99104
signalListeners.forEach { $0(self, signal, { }) }
100105
}
101106

107+
// Termination
108+
102109
public var terminationListeners = [TerminationListener]()
103110

104111
public func onTermination(listener: @escaping TerminationListener) {
105112
terminationListeners.append(listener)
106113
}
114+
115+
public func broadcastTermination() {
116+
terminationListeners.forEach { $0(self, { }) }
117+
}
107118
}

0 commit comments

Comments
 (0)