mirror of
https://github.com/flutter/flutter
synced 2024-10-13 11:42:54 +00:00
[flutter_tools] iOS VM Service logs should include stderr (#58551)
This commit is contained in:
parent
e72e7f9fb0
commit
7e942b6229
|
@ -655,16 +655,25 @@ class IOSDeviceLogReader extends DeviceLogReader {
|
|||
return;
|
||||
}
|
||||
try {
|
||||
await connectedVmService.streamListen('Stdout');
|
||||
await Future.wait(<Future<void>>[
|
||||
connectedVmService.streamListen(vm_service.EventStreams.kStdout),
|
||||
connectedVmService.streamListen(vm_service.EventStreams.kStderr),
|
||||
]);
|
||||
} on vm_service.RPCError {
|
||||
// Do nothing, since the tool is already subscribed.
|
||||
}
|
||||
_loggingSubscriptions.add(connectedVmService.onStdoutEvent.listen((vm_service.Event event) {
|
||||
|
||||
void logMessage(vm_service.Event event) {
|
||||
final String message = utf8.decode(base64.decode(event.bytes));
|
||||
if (message.isNotEmpty) {
|
||||
_linesController.add(message);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
_loggingSubscriptions.addAll(<StreamSubscription<void>>[
|
||||
connectedVmService.onStdoutEvent.listen(logMessage),
|
||||
connectedVmService.onStderrEvent.listen(logMessage),
|
||||
]);
|
||||
}
|
||||
|
||||
void _listenToSysLog() {
|
||||
|
|
|
@ -153,25 +153,42 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
|
|||
logger: logger,
|
||||
),
|
||||
);
|
||||
final StreamController<Event> controller = StreamController<Event>();
|
||||
final StreamController<Event> stdoutController = StreamController<Event>();
|
||||
final StreamController<Event> stderController = StreamController<Event>();
|
||||
final Completer<Success> stdoutCompleter = Completer<Success>();
|
||||
final Completer<Success> stderrCompleter = Completer<Success>();
|
||||
when(vmService.streamListen('Stdout')).thenAnswer((Invocation invocation) {
|
||||
return stdoutCompleter.future;
|
||||
});
|
||||
when(vmService.streamListen('Stderr')).thenAnswer((Invocation invocation) {
|
||||
return stderrCompleter.future;
|
||||
});
|
||||
when(vmService.onStdoutEvent).thenAnswer((Invocation invocation) {
|
||||
return controller.stream;
|
||||
return stdoutController.stream;
|
||||
});
|
||||
when(vmService.onStderrEvent).thenAnswer((Invocation invocation) {
|
||||
return stderController.stream;
|
||||
});
|
||||
logReader.connectedVMService = vmService;
|
||||
|
||||
stdoutCompleter.complete(Success());
|
||||
controller.add(Event(
|
||||
stderrCompleter.complete(Success());
|
||||
stdoutController.add(Event(
|
||||
kind: 'Stdout',
|
||||
timestamp: 0,
|
||||
bytes: base64.encode(utf8.encode(' This is a message ')),
|
||||
));
|
||||
stderController.add(Event(
|
||||
kind: 'Stderr',
|
||||
timestamp: 0,
|
||||
bytes: base64.encode(utf8.encode(' And this is an error ')),
|
||||
));
|
||||
|
||||
// Wait for stream listeners to fire.
|
||||
await expectLater(logReader.logLines, emits(' This is a message '));
|
||||
await expectLater(logReader.logLines, emitsInAnyOrder(<Matcher>[
|
||||
equals(' This is a message '),
|
||||
equals(' And this is an error '),
|
||||
]));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue