From eead1efe5f027ff8846d8c88d7a8d296007acaa4 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Tue, 20 Sep 2022 11:10:13 -0700 Subject: [PATCH] [flutter_tools] Fix type error in ChromiumDevice.startApp (#111935) --- .../flutter_tools/lib/src/web/web_device.dart | 4 +-- .../resident_web_runner_test.dart | 2 +- .../test/general.shard/web/devices_test.dart | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/packages/flutter_tools/lib/src/web/web_device.dart b/packages/flutter_tools/lib/src/web/web_device.dart index 3a743468ac7..8e46efb61f3 100644 --- a/packages/flutter_tools/lib/src/web/web_device.dart +++ b/packages/flutter_tools/lib/src/web/web_device.dart @@ -118,7 +118,7 @@ abstract class ChromiumDevice extends Device { @override Future startApp( - covariant WebApplicationPackage package, { + WebApplicationPackage? package, { String? mainPath, String? route, required DebuggingOptions debuggingOptions, @@ -454,7 +454,7 @@ class WebServerDevice extends Device { Future get sdkNameAndVersion async => 'Flutter Tools'; @override - Future startApp(ApplicationPackage package, { + Future startApp(ApplicationPackage? package, { String? mainPath, String? route, required DebuggingOptions debuggingOptions, 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 8958d04e065..48580fc2007 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 @@ -340,7 +340,7 @@ void main() { fakeVmServiceHost = FakeVmServiceHost(requests: kAttachExpectations.toList()); setupMocks(); - fileSystem.file(fileSystem.path.join('web', 'index.html')).deleteSync(); + fileSystem.directory('web').deleteSync(recursive: true); final ResidentWebRunner residentWebRunner = ResidentWebRunner( flutterDevice, flutterProject: diff --git a/packages/flutter_tools/test/general.shard/web/devices_test.dart b/packages/flutter_tools/test/general.shard/web/devices_test.dart index 270da312a25..c5c9b9d4c88 100644 --- a/packages/flutter_tools/test/general.shard/web/devices_test.dart +++ b/packages/flutter_tools/test/general.shard/web/devices_test.dart @@ -112,6 +112,37 @@ void main() { expect(device.supportsRuntimeMode(BuildMode.jitRelease), false); }); + testWithoutContext('ChromiumDevice accepts null package', () async { + final MemoryFileSystem fs = MemoryFileSystem.test(); + final FakePlatform platform = FakePlatform(); + final FakeProcessManager pm = FakeProcessManager.any(); + final BufferLogger logger = BufferLogger.test(); + final GoogleChromeDevice device = GoogleChromeDevice( + fileSystem: fs, + processManager: pm, + platform: platform, + chromiumLauncher: ChromiumLauncher( + fileSystem: fs, + platform: platform, + processManager: pm, + operatingSystemUtils: FakeOperatingSystemUtils(), + browserFinder: findChromeExecutable, + logger: logger, + ), + logger: logger, + ); + await expectLater( + () => device.startApp( + null, + debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), + platformArgs: {'uri': 'localhost:1234'}, + ), + // The tool exit here is irrelevant, this test simply ensures ChromiumDevice.startApp + // will accept a null value for a package. + throwsToolExit(message: 'Failed to launch browser'), + ); + }); + testWithoutContext('Chrome device is listed when Chrome can be run', () async { final WebDevices webDevices = WebDevices( featureFlags: TestFeatureFlags(isWebEnabled: true),