From 95889463658511120f2d7dff1af873aff317d21b Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 5 Oct 2018 13:48:41 -0700 Subject: [PATCH] Do not continue a hot restart if _restartFromSources fails (#22645) --- packages/flutter_tools/lib/src/run_hot.dart | 4 +++- packages/flutter_tools/test/hot_test.dart | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index 35d5f9285c..2f68bb5ac3 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -502,7 +502,9 @@ class HotRunner extends ResidentRunner { try { if (!(await hotRunnerConfig.setupHotRestart())) return OperationResult(1, 'setupHotRestart failed'); - await _restartFromSources(); + final OperationResult result = await _restartFromSources(); + if (!result.isOk) + return result; } finally { status.cancel(); } diff --git a/packages/flutter_tools/test/hot_test.dart b/packages/flutter_tools/test/hot_test.dart index 0094422574..4ee6ec4b68 100644 --- a/packages/flutter_tools/test/hot_test.dart +++ b/packages/flutter_tools/test/hot_test.dart @@ -103,14 +103,16 @@ void main() { testUsingContext('no setup', () async { final List devices = [FlutterDevice(MockDevice(), generator: residentCompiler, trackWidgetCreation: false)]; - expect((await HotRunner(devices).restart(fullRestart: true)).isOk, true); + expect((await HotRunner(devices).restart(fullRestart: true)).isOk, false); }, overrides: { Artifacts: () => mockArtifacts, }); testUsingContext('setup function succeeds', () async { final List devices = [FlutterDevice(MockDevice(), generator: residentCompiler, trackWidgetCreation: false)]; - expect((await HotRunner(devices).restart(fullRestart: true)).isOk, true); + final OperationResult result = await HotRunner(devices).restart(fullRestart: true); + expect(result.isOk, false); + expect(result.message, isNot('setupHotRestart failed')); }, overrides: { Artifacts: () => mockArtifacts, HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: true), @@ -118,7 +120,9 @@ void main() { testUsingContext('setup function fails', () async { final List devices = [FlutterDevice(MockDevice(), generator: residentCompiler, trackWidgetCreation: false)]; - expect((await HotRunner(devices).restart(fullRestart: true)).isOk, false); + final OperationResult result = await HotRunner(devices).restart(fullRestart: true); + expect(result.isOk, false); + expect(result.message, 'setupHotRestart failed'); }, overrides: { Artifacts: () => mockArtifacts, HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: false),