Skip to content

Commit 747e8c0

Browse files
authored
Fix shared mutable state problem with install test (#399)
1 parent e6a78f5 commit 747e8c0

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

Tests/SwiftlyTests/InstallTests.swift

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -320,17 +320,17 @@ import Testing
320320
try? FileManager.default.removeItem(atPath: pipePath)
321321
}
322322

323-
var receivedMessages: [ProgressInfo] = []
324323
let decoder = JSONDecoder()
325-
var installCompleted = false
326324

327325
let readerTask = Task {
328-
guard let fileHandle = FileHandle(forReadingAtPath: pipePath) else { return }
326+
var receivedMessages: [ProgressInfo] = []
327+
328+
guard let fileHandle = FileHandle(forReadingAtPath: pipePath) else { throw SwiftlyError(message: "Unable to open file handle at \(pipePath)") }
329329
defer { fileHandle.closeFile() }
330330

331331
var buffer = Data()
332332

333-
while !installCompleted {
333+
while true {
334334
let data = fileHandle.availableData
335335
if data.isEmpty {
336336
try await Task.sleep(nanoseconds: 100_000_000)
@@ -347,13 +347,14 @@ import Testing
347347
if let progress = try? decoder.decode(ProgressInfo.self, from: lineData) {
348348
receivedMessages.append(progress)
349349
if case .complete = progress {
350-
installCompleted = true
351-
return
350+
return receivedMessages
352351
}
353352
}
354353
}
355354
}
356355
}
356+
357+
return receivedMessages
357358
}
358359

359360
let installTask = Task {
@@ -364,10 +365,10 @@ import Testing
364365
])
365366
}
366367

367-
await withTaskGroup(of: Void.self) { group in
368-
group.addTask { try? await readerTask.value }
369-
group.addTask { try? await installTask.value }
370-
}
368+
let readerResult = await readerTask.result
369+
try await installTask.value
370+
371+
let receivedMessages = try readerResult.get()
371372

372373
#expect(!receivedMessages.isEmpty, "Named pipe should receive progress entries")
373374

0 commit comments

Comments
 (0)