mirror of
https://github.com/flutter/flutter
synced 2024-10-13 19:52:53 +00:00
Make Android log reader read any recent logs (#45743)
This commit is contained in:
parent
e2642fd6c0
commit
475ee89879
|
@ -688,7 +688,7 @@ class AndroidDevice extends Device {
|
|||
String output;
|
||||
try {
|
||||
output = runAdbCheckedSync(<String>[
|
||||
'shell', '-x', 'logcat', '-v', 'time', '-t', '1',
|
||||
'shell', '-x', 'logcat', '-v', 'time', '-t', '1'
|
||||
]);
|
||||
} catch (error) {
|
||||
printError('Failed to extract the most recent timestamp from the Android log: $error.');
|
||||
|
@ -1007,8 +1007,9 @@ class _AdbLogReader extends DeviceLogReader {
|
|||
String get name => device.name;
|
||||
|
||||
void _start() {
|
||||
// Start the adb logcat process and filter logs by the "flutter" tag.
|
||||
final List<String> args = <String>['shell', '-x', 'logcat', '-v', 'time', '-s', 'flutter'];
|
||||
final String lastTimestamp = device.lastLogcatTimestamp;
|
||||
// Start the adb logcat process and filter the most recent logs since `lastTimestamp`.
|
||||
final List<String> args = <String>['logcat', '-v', 'time', '-T', lastTimestamp];
|
||||
processUtils.start(device.adbCommandForDevice(args)).then<void>((Process process) {
|
||||
_process = process;
|
||||
// We expect logcat streams to occasionally contain invalid utf-8,
|
||||
|
|
|
@ -680,6 +680,35 @@ flutter:
|
|||
});
|
||||
});
|
||||
|
||||
group('logReader', () {
|
||||
ProcessManager mockProcessManager;
|
||||
AndroidSdk mockAndroidSdk;
|
||||
|
||||
setUp(() {
|
||||
mockAndroidSdk = MockAndroidSdk();
|
||||
mockProcessManager = MockProcessManager();
|
||||
});
|
||||
|
||||
testUsingContext('calls adb logcat with expected flags', () async {
|
||||
const String klastLocatcatTimestamp = '11-27 15:39:04.506';
|
||||
when(mockAndroidSdk.adbPath).thenReturn('adb');
|
||||
when(mockProcessManager.runSync(<String>['adb', '-s', '1234', 'shell', '-x', 'logcat', '-v', 'time', '-t', '1']))
|
||||
.thenReturn(ProcessResult(0, 0, '$klastLocatcatTimestamp I/flutter: irrelevant', ''));
|
||||
when(mockProcessManager.start(argThat(contains('logcat'))))
|
||||
.thenAnswer((_) => Future<Process>.value(createMockProcess()));
|
||||
|
||||
final AndroidDevice device = AndroidDevice('1234');
|
||||
final DeviceLogReader logReader = device.getLogReader();
|
||||
logReader.logLines.listen((_) {});
|
||||
|
||||
verify(mockProcessManager.start(const <String>['adb', '-s', '1234', 'logcat', '-v', 'time', '-T', klastLocatcatTimestamp]))
|
||||
.called(1);
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
});
|
||||
|
||||
test('Can parse adb shell dumpsys info', () {
|
||||
const String exampleOutput = r'''
|
||||
Applications Memory Usage (in Kilobytes):
|
||||
|
|
Loading…
Reference in a new issue