From c01cad34915618b33a43802dba3553c56d4fde29 Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Wed, 7 Mar 2018 06:27:58 -0800 Subject: [PATCH] Fix `flutter test --preview-dart-2` following last dart roll. (#15233) * Fix `flutter test --preview-dart-2` following last dart roll. Incremental compiler maintains single incremental dill file, so for every test compilation that dill file has to be copied away for execution. * Fix lints --- .../lib/src/test/flutter_platform.dart | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart index 951c1f42f2..7faf749d1c 100644 --- a/packages/flutter_tools/lib/src/test/flutter_platform.dart +++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart @@ -107,6 +107,14 @@ class _FlutterPlatform extends PlatformPlugin { this.port, this.dillFilePath, }) : assert(shellPath != null) { + + // Compiler maintains and updates single incremental dill file. + // Incremental compilation requests done for each test copy that file away + // for independent execution. + final Directory outputDillDirectory = fs.systemTempDirectory + .createTempSync('output_dill'); + final File outputDill = outputDillDirectory.childFile('output.dill'); + compilerController.stream.listen((CompilationRequest request) async { final bool isEmpty = compilationQueue.isEmpty; compilationQueue.add(request); @@ -118,9 +126,11 @@ class _FlutterPlatform extends PlatformPlugin { final CompilationRequest request = compilationQueue.first; printTrace('Compiling ${request.path}'); final String outputPath = await compiler.recompile(request.path, - [request.path] + [request.path], + outputPath: outputDill.path ); - print('Finished compilation of ${request.path} into $outputPath'); + // Copy output dill next to the source file. + await outputDill.copy(request.path + '.dill'); compiler.accept(); compiler.reset(); request.result.complete(outputPath); @@ -128,6 +138,8 @@ class _FlutterPlatform extends PlatformPlugin { compilationQueue.removeAt(0); } } + }, onDone: () { + outputDillDirectory.delete(recursive: true); }); }