Unverified Commit 7e942b62 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] iOS VM Service logs should include stderr (#58551)

parent e72e7f9f
...@@ -655,16 +655,25 @@ class IOSDeviceLogReader extends DeviceLogReader { ...@@ -655,16 +655,25 @@ class IOSDeviceLogReader extends DeviceLogReader {
return; return;
} }
try { 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 { } on vm_service.RPCError {
// Do nothing, since the tool is already subscribed. // 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)); final String message = utf8.decode(base64.decode(event.bytes));
if (message.isNotEmpty) { if (message.isNotEmpty) {
_linesController.add(message); _linesController.add(message);
} }
})); }
_loggingSubscriptions.addAll(<StreamSubscription<void>>[
connectedVmService.onStdoutEvent.listen(logMessage),
connectedVmService.onStderrEvent.listen(logMessage),
]);
} }
void _listenToSysLog() { void _listenToSysLog() {
......
...@@ -153,25 +153,42 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt ...@@ -153,25 +153,42 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
logger: logger, 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> stdoutCompleter = Completer<Success>();
final Completer<Success> stderrCompleter = Completer<Success>();
when(vmService.streamListen('Stdout')).thenAnswer((Invocation invocation) { when(vmService.streamListen('Stdout')).thenAnswer((Invocation invocation) {
return stdoutCompleter.future; return stdoutCompleter.future;
}); });
when(vmService.streamListen('Stderr')).thenAnswer((Invocation invocation) {
return stderrCompleter.future;
});
when(vmService.onStdoutEvent).thenAnswer((Invocation invocation) { when(vmService.onStdoutEvent).thenAnswer((Invocation invocation) {
return controller.stream; return stdoutController.stream;
});
when(vmService.onStderrEvent).thenAnswer((Invocation invocation) {
return stderController.stream;
}); });
logReader.connectedVMService = vmService; logReader.connectedVMService = vmService;
stdoutCompleter.complete(Success()); stdoutCompleter.complete(Success());
controller.add(Event( stderrCompleter.complete(Success());
stdoutController.add(Event(
kind: 'Stdout', kind: 'Stdout',
timestamp: 0, timestamp: 0,
bytes: base64.encode(utf8.encode(' This is a message ')), 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. // 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 '),
]));
}); });
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment