Revert "[flutter_tools] only copy cached dill after startup (#58188)" (#58454)
This reverts commit 39d1e4b7e9222394d6013aa21731968b36b30cc7.
diff --git a/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart b/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
index b4cd7a4..0ecb2d6 100644
--- a/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
+++ b/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
@@ -434,7 +434,6 @@
return 1;
}
device.generator.accept();
- cacheInitialDillCompilation();
} else {
await buildWeb(
flutterProject,
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart
index 00b9f7f..b7ced11 100644
--- a/packages/flutter_tools/lib/src/resident_runner.dart
+++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -1099,19 +1099,6 @@
);
}
- @protected
- void cacheInitialDillCompilation() {
- globals.logger.printTrace('Caching compiled dill');
- final File outputDill = globals.fs.file(dillOutputPath);
- if (outputDill.existsSync()) {
- final String copyPath = getDefaultCachedKernelPath(
- trackWidgetCreation: trackWidgetCreation,
- );
- globals.fs.file(copyPath).parent.createSync(recursive: true);
- outputDill.copySync(copyPath);
- }
- }
-
/// If the [reloadSources] parameter is not null the 'reloadSources' service
/// will be registered.
//
@@ -1221,9 +1208,14 @@
@mustCallSuper
Future<void> preExit() async {
- // If _dillOutputPath is null, the tool created a temporary directory for
- // the dill.
+ // If _dillOutputPath is null, we created a temporary directory for the dill.
if (_dillOutputPath == null && artifactDirectory.existsSync()) {
+ final File outputDill = globals.fs.file(dillOutputPath);
+ if (outputDill.existsSync()) {
+ outputDill.copySync(getDefaultCachedKernelPath(
+ trackWidgetCreation: trackWidgetCreation,
+ ));
+ }
artifactDirectory.deleteSync(recursive: true);
}
}
diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart
index 1c7793c..76fc6e2 100644
--- a/packages/flutter_tools/lib/src/run_hot.dart
+++ b/packages/flutter_tools/lib/src/run_hot.dart
@@ -63,6 +63,7 @@
List<vm_service.ReloadReport> reports; // List has one report per Flutter view.
}
+// TODO(mklim): Test this, flutter/flutter#23031.
class HotRunner extends ResidentRunner {
HotRunner(
List<FlutterDevice> devices, {
@@ -387,7 +388,6 @@
if (!results.every((bool passed) => passed)) {
return 1;
}
- cacheInitialDillCompilation();
} on Exception catch (err) {
globals.printError(err.toString());
return 1;
diff --git a/packages/flutter_tools/test/general.shard/resident_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_runner_test.dart
index 9ab5636..319df1a 100644
--- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart
+++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart
@@ -521,12 +521,22 @@
expect(otherRunner.artifactDirectory.path, contains('foobar'));
}));
- test('ResidentRunner deletes artifact directory on preExit', () => testbed.run(() async {
+ test('ResidentRunner copies output dill to cache location during preExit', () => testbed.run(() async {
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]);
- residentRunner.artifactDirectory.childFile('app.dill').createSync();
+ residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('hello');
await residentRunner.preExit();
+ final File cacheDill = globals.fs.file(globals.fs.path.join(getBuildDirectory(), 'cache.dill'));
- expect(residentRunner.artifactDirectory, isNot(exists));
+ expect(cacheDill, exists);
+ expect(cacheDill.readAsStringSync(), 'hello');
+ }));
+
+ test('ResidentRunner handles output dill missing during preExit', () => testbed.run(() async {
+ fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]);
+ await residentRunner.preExit();
+ final File cacheDill = globals.fs.file(globals.fs.path.join(getBuildDirectory(), 'cache.dill'));
+
+ expect(cacheDill, isNot(exists));
}));
test('ResidentRunner can run source generation', () => testbed.run(() async {
@@ -1050,64 +1060,6 @@
expect(await globals.fs.file('foo').readAsString(), testUri.toString());
}));
- test('HotRunner copies compiled app.dill to cache during startup', () => testbed.run(() async {
- fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
- listViews,
- listViews,
- ]);
- setWsAddress(testUri, fakeVmServiceHost.vmService);
- globals.fs.file(globals.fs.path.join('lib', 'main.dart')).createSync(recursive: true);
- residentRunner = HotRunner(
- <FlutterDevice>[
- mockFlutterDevice,
- ],
- stayResident: false,
- debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug),
- );
- residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC');
- when(mockFlutterDevice.runHot(
- hotRunner: anyNamed('hotRunner'),
- route: anyNamed('route'),
- )).thenAnswer((Invocation invocation) async {
- return 0;
- });
- await residentRunner.run();
-
- expect(await globals.fs.file(globals.fs.path.join('build', 'cache.dill')).readAsString(), 'ABC');
- }));
-
- test('HotRunner copies compiled app.dill to cache during startup with --track-widget-creation', () => testbed.run(() async {
- fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
- listViews,
- listViews,
- ]);
- setWsAddress(testUri, fakeVmServiceHost.vmService);
- globals.fs.file(globals.fs.path.join('lib', 'main.dart')).createSync(recursive: true);
- residentRunner = HotRunner(
- <FlutterDevice>[
- mockFlutterDevice,
- ],
- stayResident: false,
- debuggingOptions: DebuggingOptions.enabled(const BuildInfo(
- BuildMode.debug,
- '',
- treeShakeIcons: false,
- trackWidgetCreation: true,
- )),
- );
- residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC');
- when(mockFlutterDevice.runHot(
- hotRunner: anyNamed('hotRunner'),
- route: anyNamed('route'),
- )).thenAnswer((Invocation invocation) async {
- return 0;
- });
- await residentRunner.run();
-
- expect(await globals.fs.file(globals.fs.path.join('build', 'cache.dill.track.dill')).readAsString(), 'ABC');
- }));
-
-
test('HotRunner unforwards device ports', () => testbed.run(() async {
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[
listViews,
diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart
index aca6cec..7a30f97 100644
--- a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart
+++ b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart
@@ -257,21 +257,13 @@
expect(bufferLogger.statusText, contains('Debug service listening on ws://127.0.0.1/abcd/'));
expect(debugConnectionInfo.wsUri.toString(), 'ws://127.0.0.1/abcd/');
}, overrides: <Type, Generator>{
- Logger: () => DelegateLogger(BufferLogger.test()),
- }));
-
- test('WebRunner copies compiled app.dill to cache during startup', () => testbed.run(() async {
- fakeVmServiceHost = FakeVmServiceHost(requests: kAttachExpectations.toList());
- _setupMocks();
-
- residentWebRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC');
- final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
- unawaited(residentWebRunner.run(
- connectionInfoCompleter: connectionInfoCompleter,
- ));
- await connectionInfoCompleter.future;
-
- expect(await globals.fs.file(globals.fs.path.join('build', 'cache.dill')).readAsString(), 'ABC');
+ Logger: () => DelegateLogger(BufferLogger(
+ terminal: AnsiTerminal(
+ stdio: null,
+ platform: const LocalPlatform(),
+ ),
+ outputPreferences: OutputPreferences.test(),
+ )),
}));
test('Can successfully run without an index.html including status warning', () => testbed.run(() async {