Do not continue a hot restart if _restartFromSources fails (#22645)

This commit is contained in:
Jason Simmons 2018-10-05 13:48:41 -07:00 committed by GitHub
parent a6c5ec2e08
commit 9588946365
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -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();
}

View File

@ -103,14 +103,16 @@ void main() {
testUsingContext('no setup', () async {
final List<FlutterDevice> devices = <FlutterDevice>[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: <Type, Generator>{
Artifacts: () => mockArtifacts,
});
testUsingContext('setup function succeeds', () async {
final List<FlutterDevice> devices = <FlutterDevice>[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: <Type, Generator>{
Artifacts: () => mockArtifacts,
HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: true),
@ -118,7 +120,9 @@ void main() {
testUsingContext('setup function fails', () async {
final List<FlutterDevice> devices = <FlutterDevice>[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: <Type, Generator>{
Artifacts: () => mockArtifacts,
HotRunnerConfig: () => TestHotRunnerConfig(successfulSetup: false),