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

This commit is contained in:
Jonah Williams 2019-08-15 09:08:19 -07:00 committed by GitHub
parent b296d95391
commit 5ec039dd45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 1 deletions

View File

@ -467,7 +467,7 @@ class DevFS {
outputPath: dillOutputPath ?? getDefaultApplicationKernelPath(trackWidgetCreation: trackWidgetCreation),
packagesFilePath : _packagesFilePath,
);
if (compilerOutput == null) {
if (compilerOutput == null || compilerOutput.errorCount > 0) {
return UpdateFSReport(success: false);
}
// list of sources that needs to be monitored are in [compilerOutput.sources]

View File

@ -10,9 +10,11 @@ import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.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/vmservice.dart';
import 'package:json_rpc_2/json_rpc_2.dart' as rpc;
import 'package:mockito/mockito.dart';
import '../src/common.dart';
import '../src/context.dart';
@ -100,6 +102,7 @@ void main() {
vmService = MockVMService();
await vmService.setUp();
});
tearDownAll(() async {
await vmService.tearDown();
_cleanupTempDirs();
@ -171,6 +174,33 @@ void main() {
}, overrides: <Type, Generator>{
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 {
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
class RealMockResidentCompiler extends Mock implements ResidentCompiler {}
final List<Directory> _tempDirs = <Directory>[];
final Map <String, Uri> _packages = <String, Uri>{};