Catch failed startup error from build_daemon (#43598)

This commit is contained in:
Jonah Williams
2019-10-28 15:58:14 -07:00
committed by GitHub
parent 7de800c44a
commit e25cd84a06
2 changed files with 29 additions and 0 deletions

View File

@@ -255,6 +255,15 @@ class ResidentWebRunner extends ResidentRunner {
'start or was killed by another process.');
} on SocketException catch (err) {
throwToolExit(err.toString());
} on StateError catch (err) {
final String message = err.toString();
if (message.contains('Unable to start build daemon')) {
throwToolExit(
'Failed to start build daemon. The process might have '
'exited unexpectedly during startup. Try running the application '
'again.');
}
rethrow;
} finally {
if (statusActive) {
buildStatus.stop();

View File

@@ -658,6 +658,26 @@ void main() {
await expectation;
}));
test('Successfully turns failed startup StateError error into ToolExit', () => testbed.run(() async {
_setupMocks();
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
final Completer<void> unhandledErrorCompleter = Completer<void>();
when(mockWebFs.connect(any)).thenAnswer((Invocation _) async {
unawaited(unhandledErrorCompleter.future.then((void value) {
throw StateError('Unable to start build daemon');
}));
return ConnectionResult(mockAppConnection, mockDebugConnection);
});
final Future<void> expectation = expectLater(() => residentWebRunner.run(
connectionInfoCompleter: connectionInfoCompleter,
), throwsA(isInstanceOf<ToolExit>()));
unhandledErrorCompleter.complete();
await expectation;
}));
test('Rethrows Exception type', () => testbed.run(() async {
_setupMocks();
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();