Skip to content

Commit dd8e927

Browse files
authored
Merge pull request #67 from Carthage/fix-stderr-output
[TaskEvent] Fix standard error handling
2 parents 44dcde2 + 2c66aa8 commit dd8e927

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

ReactiveTask/Task.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,15 +451,15 @@ public func launchTask(task: Task, standardInput: SignalProducer<NSData, NoError
451451
}
452452

453453
return SignalProducer { observer, disposable in
454-
func startAggregating(producer: Pipe.ReadProducer) -> Pipe.ReadProducer {
454+
func startAggregating(producer: Pipe.ReadProducer, chunk: (NSData) -> TaskEvent<NSData>) -> Pipe.ReadProducer {
455455
let aggregated = MutableProperty<Aggregation?>(nil)
456456

457457
producer.startWithSignal { signal, signalDisposable in
458458
disposable += signalDisposable
459459

460460
let aggregate = NSMutableData()
461461
signal.observe(Observer(next: { data in
462-
observer.sendNext(.StandardOutput(data))
462+
observer.sendNext(chunk(data))
463463
aggregate.appendData(data)
464464
}, failed: { error in
465465
observer.sendFailed(error)
@@ -476,8 +476,8 @@ public func launchTask(task: Task, standardInput: SignalProducer<NSData, NoError
476476
.flatMap(.Concat) { $0.producer }
477477
}
478478

479-
let stdoutAggregated = startAggregating(stdoutProducer)
480-
let stderrAggregated = startAggregating(stderrProducer)
479+
let stdoutAggregated = startAggregating(stdoutProducer, chunk: TaskEvent.StandardOutput)
480+
let stderrAggregated = startAggregating(stderrProducer, chunk: TaskEvent.StandardError)
481481

482482
rawTask.standardOutput = stdoutPipe.writeHandle
483483
rawTask.standardError = stderrPipe.writeHandle

ReactiveTaskTests/TaskSpec.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ class TaskSpec: QuickSpec {
5050
}
5151

5252
it("should launch a task that writes to stderr") {
53+
let aggregated = NSMutableData()
5354
let result = launchTask(Task("/usr/bin/stat", arguments: [ "not-a-real-file" ]))
54-
.reduce(NSMutableData()) { aggregated, event in
55+
.reduce(aggregated) { aggregated, event in
5556
if case let .StandardError(data) = event {
5657
aggregated.appendData(data)
5758
}
@@ -61,9 +62,8 @@ class TaskSpec: QuickSpec {
6162
.single()
6263

6364
expect(result).notTo(beNil())
64-
if let data = result?.value {
65-
expect(NSString(data: data, encoding: NSUTF8StringEncoding)).to(equal("stat: not-a-real-file: stat: No such file or directory\n"))
66-
}
65+
expect(result?.error).notTo(beNil())
66+
expect(NSString(data: aggregated, encoding: NSUTF8StringEncoding)).to(equal("stat: not-a-real-file: stat: No such file or directory\n"))
6767
}
6868

6969
it("should launch a task with standard input") {

0 commit comments

Comments
 (0)