From 87d5b753196cd8eaec15bf4080f4dffbe0c36617 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Fri, 5 Sep 2025 11:40:29 -0400 Subject: [PATCH] [ Device Lab ] Add regression testing for flutter/flutter#174952 (#174956) Also switches to using a regex group to match the device state instead of splitting the matched string on '='. Fixes https://github.com/flutter/flutter/issues/174952 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- dev/devicelab/lib/framework/devices.dart | 7 ++++--- dev/devicelab/test/adb_test.dart | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/dev/devicelab/lib/framework/devices.dart b/dev/devicelab/lib/framework/devices.dart index 6f58af217a0..e67f45c420c 100644 --- a/dev/devicelab/lib/framework/devices.dart +++ b/dev/devicelab/lib/framework/devices.dart @@ -685,9 +685,10 @@ class AndroidDevice extends Device { final String powerInfo = await shellEval('dumpsys', ['power']); // A motoG4 phone returns `mWakefulness=Awake`. // A Samsung phone returns `getWakefullnessLocked()=Awake`. - final RegExp wakefulnessRegexp = RegExp(r'(?:mWakefulness|getWakefulnessLocked\(\))=[a-zA-Z]+'); - final String wakefulness = grep(wakefulnessRegexp, from: powerInfo).single.split('=')[1].trim(); - return wakefulness; + final RegExp wakefulnessRegexp = RegExp( + r'(?:mWakefulness|getWakefulnessLocked\(\))=\s*([a-zA-Z]+)', + ); + return wakefulnessRegexp.allMatches(powerInfo).single.group(1)!; } Future isArm64() async { diff --git a/dev/devicelab/test/adb_test.dart b/dev/devicelab/test/adb_test.dart index e353384290d..5cb279baf60 100644 --- a/dev/devicelab/test/adb_test.dart +++ b/dev/devicelab/test/adb_test.dart @@ -23,7 +23,9 @@ void main() { device = FakeDevice(deviceId: 'fakeDeviceId'); }); - tearDown(() {}); + tearDown(() { + FakeDevice.resetLog(); + }); group('cpu check', () { test('arm64', () async { @@ -325,20 +327,38 @@ class FakeDevice extends AndroidDevice { } static void pretendAwake() { + // Emit an integer value in addition to the state string to ensure only + // the state string is matched. + // + // Regression testing for https://github.com/flutter/flutter/issues/174952. output = ''' + mWakefulness=1 mWakefulness=Awake + '''; } static void pretendAwakeSamsung() { + // Emit an integer value in addition to the state string to ensure only + // the state string is matched. + // + // Regression testing for https://github.com/flutter/flutter/issues/174952. output = ''' + getWakefulnessLocked()=1 getWakefulnessLocked()=Awake + '''; } static void pretendAsleep() { + // Emit an integer value in addition to the state string to ensure only + // the state string is matched. + // + // Regression testing for https://github.com/flutter/flutter/issues/174952. output = ''' + mWakefulness=0 mWakefulness=Asleep + '''; }