Wait for isolate start before proceeding with expression evaluation tests (#42464)
Fixes https://github.com/flutter/flutter/issues/42359
diff --git a/packages/flutter_tools/test/integration.shard/test_driver.dart b/packages/flutter_tools/test/integration.shard/test_driver.dart
index e2845eb..eabae35 100644
--- a/packages/flutter_tools/test/integration.shard/test_driver.dart
+++ b/packages/flutter_tools/test/integration.shard/test_driver.dart
@@ -127,8 +127,12 @@
_vmService = await vmServiceConnectUri('$_vmServiceWsUri');
_vmService.onSend.listen((String s) => _debugPrint(s, topic: '=vm=>'));
_vmService.onReceive.listen((String s) => _debugPrint(s, topic: '<=vm='));
+
+ final Completer<void> isolateStarted = Completer<void>();
_vmService.onIsolateEvent.listen((Event event) {
- if (event.kind == EventKind.kIsolateExit && event.isolate.id == _flutterIsolateId) {
+ if (event.kind == EventKind.kIsolateStart) {
+ isolateStarted.complete();
+ } else if (event.kind == EventKind.kIsolateExit && event.isolate.id == _flutterIsolateId) {
// Hot restarts cause all the isolates to exit, so we need to refresh
// our idea of what the Flutter isolate ID is.
_flutterIsolateId = null;
@@ -140,6 +144,10 @@
_vmService.streamListen('Debug'),
]);
+ if ((await _vmService.getVM()).isolates.isEmpty) {
+ await isolateStarted.future;
+ }
+
await waitForPause();
if (pauseOnExceptions) {
await _vmService.setExceptionPauseMode(