Terminate simulator app on "q" (#114114)
This commit is contained in:
parent
8aad1190b7
commit
15e694414c
@ -16,7 +16,7 @@ Future<void> main() async {
|
|||||||
await testWithNewIOSSimulator('TestHotReloadSim', (String deviceId) async {
|
await testWithNewIOSSimulator('TestHotReloadSim', (String deviceId) async {
|
||||||
simulatorDeviceId = deviceId;
|
simulatorDeviceId = deviceId;
|
||||||
// This isn't actually a benchmark test, so do not use the returned `benchmarkScoreKeys` result.
|
// This isn't actually a benchmark test, so do not use the returned `benchmarkScoreKeys` result.
|
||||||
await createHotModeTest(deviceIdOverride: deviceId)();
|
await createHotModeTest(deviceIdOverride: deviceId, checkAppRunningOnLocalDevice: true)();
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
await removeIOSimulator(simulatorDeviceId);
|
await removeIOSimulator(simulatorDeviceId);
|
||||||
|
@ -257,6 +257,25 @@ class SimControl {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<RunResult> stopApp(String deviceId, String appIdentifier) async {
|
||||||
|
RunResult result;
|
||||||
|
try {
|
||||||
|
result = await _processUtils.run(
|
||||||
|
<String>[
|
||||||
|
..._xcode.xcrunCommand(),
|
||||||
|
'simctl',
|
||||||
|
'terminate',
|
||||||
|
deviceId,
|
||||||
|
appIdentifier,
|
||||||
|
],
|
||||||
|
throwOnError: true,
|
||||||
|
);
|
||||||
|
} on ProcessException catch (exception) {
|
||||||
|
throwToolExit('Unable to terminate $appIdentifier on $deviceId:\n$exception');
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> takeScreenshot(String deviceId, String outputPath) async {
|
Future<void> takeScreenshot(String deviceId, String outputPath) async {
|
||||||
try {
|
try {
|
||||||
await _processUtils.run(
|
await _processUtils.run(
|
||||||
@ -533,11 +552,13 @@ class IOSSimulator extends Device {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> stopApp(
|
Future<bool> stopApp(
|
||||||
ApplicationPackage app, {
|
ApplicationPackage? app, {
|
||||||
String? userIdentifier,
|
String? userIdentifier,
|
||||||
}) async {
|
}) async {
|
||||||
// Currently we don't have a way to stop an app running on iOS.
|
if (app == null) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
return (await _simControl.stopApp(id, app.id)).exitCode == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
String get logFilePath {
|
String get logFilePath {
|
||||||
|
@ -901,6 +901,36 @@ Dec 20 17:04:32 md32-11-vm1 Another App[88374]: Ignore this text'''
|
|||||||
throwsToolExit(message: r'Unable to launch'),
|
throwsToolExit(message: r'Unable to launch'),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWithoutContext('.stopApp() handles exceptions', () async {
|
||||||
|
fakeProcessManager.addCommand(const FakeCommand(
|
||||||
|
command: <String>[
|
||||||
|
'xcrun',
|
||||||
|
'simctl',
|
||||||
|
'terminate',
|
||||||
|
deviceId,
|
||||||
|
appId,
|
||||||
|
],
|
||||||
|
exception: ProcessException('xcrun', <String>[]),
|
||||||
|
));
|
||||||
|
|
||||||
|
expect(
|
||||||
|
() async => simControl.stopApp(deviceId, appId),
|
||||||
|
throwsToolExit(message: 'Unable to terminate'),
|
||||||
|
);
|
||||||
|
expect(fakeProcessManager, hasNoRemainingExpectations);
|
||||||
|
});
|
||||||
|
|
||||||
|
testWithoutContext('simulator stopApp handles null app package', () async {
|
||||||
|
final IOSSimulator iosSimulator = IOSSimulator(
|
||||||
|
'x',
|
||||||
|
name: 'Testo',
|
||||||
|
simulatorCategory: 'NaN',
|
||||||
|
simControl: simControl,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(await iosSimulator.stopApp(null), isFalse);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
group('startApp', () {
|
group('startApp', () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user