Unverified Commit 5ec039dd authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

Don't reload if compilation has errors (#38586)

parent b296d953
...@@ -467,7 +467,7 @@ class DevFS { ...@@ -467,7 +467,7 @@ class DevFS {
outputPath: dillOutputPath ?? getDefaultApplicationKernelPath(trackWidgetCreation: trackWidgetCreation), outputPath: dillOutputPath ?? getDefaultApplicationKernelPath(trackWidgetCreation: trackWidgetCreation),
packagesFilePath : _packagesFilePath, packagesFilePath : _packagesFilePath,
); );
if (compilerOutput == null) { if (compilerOutput == null || compilerOutput.errorCount > 0) {
return UpdateFSReport(success: false); return UpdateFSReport(success: false);
} }
// list of sources that needs to be monitored are in [compilerOutput.sources] // list of sources that needs to be monitored are in [compilerOutput.sources]
......
...@@ -10,9 +10,11 @@ import 'package:file/file.dart'; ...@@ -10,9 +10,11 @@ import 'package:file/file.dart';
import 'package:file/memory.dart'; import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/compile.dart';
import 'package:flutter_tools/src/devfs.dart'; import 'package:flutter_tools/src/devfs.dart';
import 'package:flutter_tools/src/vmservice.dart'; import 'package:flutter_tools/src/vmservice.dart';
import 'package:json_rpc_2/json_rpc_2.dart' as rpc; import 'package:json_rpc_2/json_rpc_2.dart' as rpc;
import 'package:mockito/mockito.dart';
import '../src/common.dart'; import '../src/common.dart';
import '../src/context.dart'; import '../src/context.dart';
...@@ -100,6 +102,7 @@ void main() { ...@@ -100,6 +102,7 @@ void main() {
vmService = MockVMService(); vmService = MockVMService();
await vmService.setUp(); await vmService.setUp();
}); });
tearDownAll(() async { tearDownAll(() async {
await vmService.tearDown(); await vmService.tearDown();
_cleanupTempDirs(); _cleanupTempDirs();
...@@ -171,6 +174,33 @@ void main() { ...@@ -171,6 +174,33 @@ void main() {
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fs, FileSystem: () => fs,
}); });
testUsingContext('reports unsuccessful compile when errors are returned', () async {
devFS = DevFS(vmService, 'test', tempDir);
await devFS.create();
final RealMockResidentCompiler residentCompiler = RealMockResidentCompiler();
when(residentCompiler.recompile(
any,
any,
outputPath: anyNamed('outputPath'),
)).thenAnswer((Invocation invocation) {
return Future<CompilerOutput>.value(const CompilerOutput('example', 2, <Uri>[]));
});
final UpdateFSReport report = await devFS.update(
mainPath: 'lib/foo.txt',
generator: residentCompiler,
pathToReload: 'lib/foo.txt.dill',
trackWidgetCreation: false,
invalidatedFiles: <Uri>[],
);
expect(report.success, false);
}, overrides: <Type, Generator>{
FileSystem: () => fs,
});
}); });
} }
...@@ -260,6 +290,7 @@ class MockVM implements VM { ...@@ -260,6 +290,7 @@ class MockVM implements VM {
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
} }
class RealMockResidentCompiler extends Mock implements ResidentCompiler {}
final List<Directory> _tempDirs = <Directory>[]; final List<Directory> _tempDirs = <Directory>[];
final Map <String, Uri> _packages = <String, Uri>{}; final Map <String, Uri> _packages = <String, Uri>{};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment