Skip to content

Commit c051601

Browse files
authored
Merge pull request swiftlang#181 from rmaz/cleanershutdown
Improve BuildServerBuildSystemTests error handling
2 parents da33b45 + d84f1be commit c051601

File tree

7 files changed

+39
-14
lines changed

7 files changed

+39
-14
lines changed

Sources/SKCore/BuildServerBuildSystem.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public final class BuildServerBuildSystem {
3030
let requestQueue: DispatchQueue
3131

3232
var handler: BuildServerHandler?
33-
var buildServer: Connection?
33+
var buildServer: JSONRPCConection?
3434
public private(set) var indexStorePath: AbsolutePath?
3535

3636
/// Delegate to handle any build system events.
@@ -74,6 +74,7 @@ public final class BuildServerBuildSystem {
7474
log("error shutting down build server: \(error)")
7575
}
7676
buildServer.send(ExitBuildNotification())
77+
buildServer.close()
7778
})
7879
}
7980
}
@@ -232,7 +233,7 @@ struct BuildServerConfig: Codable {
232233
let argv: [String]
233234
}
234235

235-
private func makeJSONRPCBuildServer(client: MessageHandler, serverPath: AbsolutePath, serverFlags: [String]?) throws -> Connection {
236+
private func makeJSONRPCBuildServer(client: MessageHandler, serverPath: AbsolutePath, serverFlags: [String]?) throws -> JSONRPCConection {
236237
let clientToServer = Pipe()
237238
let serverToClient = Pipe()
238239

Tests/INPUTS/BuildServerBuildSystemTests.testBuildTargetOutputs/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,9 @@
6969

7070
if response:
7171
responseStr = json.dumps(response)
72-
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
73-
sys.stdout.flush()
72+
try:
73+
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
74+
sys.stdout.flush()
75+
except IOError:
76+
# stdout closed, time to quit
77+
break

Tests/INPUTS/BuildServerBuildSystemTests.testBuildTargetSources/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,9 @@
9292

9393
if response:
9494
responseStr = json.dumps(response)
95-
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
96-
sys.stdout.flush()
95+
try:
96+
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
97+
sys.stdout.flush()
98+
except IOError:
99+
# stdout closed, time to quit
100+
break

Tests/INPUTS/BuildServerBuildSystemTests.testBuildTargets/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,9 @@
8888

8989
if response:
9090
responseStr = json.dumps(response)
91-
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
92-
sys.stdout.flush()
91+
try:
92+
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
93+
sys.stdout.flush()
94+
except IOError:
95+
# stdout closed, time to quit
96+
break

Tests/INPUTS/BuildServerBuildSystemTests.testFileRegistration/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77

88
def send(data):
99
dataStr = json.dumps(data)
10-
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(dataStr), dataStr))
11-
sys.stdout.flush()
10+
try:
11+
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(dataStr), dataStr))
12+
sys.stdout.flush()
13+
except IOError:
14+
# stdout closed, time to quit
15+
raise SystemExit(0)
1216

1317

1418
while True:

Tests/INPUTS/BuildServerBuildSystemTests.testServerInitialize/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,9 @@
5353

5454
if response:
5555
responseStr = json.dumps(response)
56-
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
57-
sys.stdout.flush()
56+
try:
57+
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
58+
sys.stdout.flush()
59+
except IOError:
60+
# stdout closed, time to quit
61+
break

Tests/INPUTS/BuildServerBuildSystemTests.testSettings/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,9 @@
7575

7676
if response:
7777
responseStr = json.dumps(response)
78-
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
79-
sys.stdout.flush()
78+
try:
79+
sys.stdout.write("Content-Length: {}\r\n\r\n{}".format(len(responseStr), responseStr))
80+
sys.stdout.flush()
81+
except IOError:
82+
# stdout closed, time to quit
83+
break

0 commit comments

Comments
 (0)