diff --git a/packages/flutter_tools/analysis_options.yaml b/packages/flutter_tools/analysis_options.yaml index 7d472a027d..57ae20d284 100644 --- a/packages/flutter_tools/analysis_options.yaml +++ b/packages/flutter_tools/analysis_options.yaml @@ -5,7 +5,7 @@ include: ../../analysis_options.yaml analyzer: strong-mode: - implicit-casts: true + implicit-casts: false implicit-dynamic: false linter: diff --git a/packages/flutter_tools/lib/src/build_system/targets/android.dart b/packages/flutter_tools/lib/src/build_system/targets/android.dart index 1ed1055f7a..6af27c0539 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/android.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/android.dart @@ -208,12 +208,12 @@ class AndroidAot extends AotElfBase { } // AndroidAot instances used by the bundle rules below. -const Target androidArmProfile = AndroidAot(TargetPlatform.android_arm, BuildMode.profile); -const Target androidArm64Profile = AndroidAot(TargetPlatform.android_arm64, BuildMode.profile); -const Target androidx64Profile = AndroidAot(TargetPlatform.android_x64, BuildMode.profile); -const Target androidArmRelease = AndroidAot(TargetPlatform.android_arm, BuildMode.release); -const Target androidArm64Release = AndroidAot(TargetPlatform.android_arm64, BuildMode.release); -const Target androidx64Release = AndroidAot(TargetPlatform.android_x64, BuildMode.release); +const AndroidAot androidArmProfile = AndroidAot(TargetPlatform.android_arm, BuildMode.profile); +const AndroidAot androidArm64Profile = AndroidAot(TargetPlatform.android_arm64, BuildMode.profile); +const AndroidAot androidx64Profile = AndroidAot(TargetPlatform.android_x64, BuildMode.profile); +const AndroidAot androidArmRelease = AndroidAot(TargetPlatform.android_arm, BuildMode.release); +const AndroidAot androidArm64Release = AndroidAot(TargetPlatform.android_arm64, BuildMode.release); +const AndroidAot androidx64Release = AndroidAot(TargetPlatform.android_x64, BuildMode.release); /// A rule paired with [AndroidAot] that copies the produced so files into the output directory. class AndroidAotBundle extends Target { diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart index 17ceae7d09..f56ad1e448 100644 --- a/packages/flutter_tools/lib/src/commands/assemble.dart +++ b/packages/flutter_tools/lib/src/commands/assemble.dart @@ -169,7 +169,7 @@ class AssembleCommand extends FlutterCommand { final Target target = targets.length == 1 ? targets.single : _CompositeTarget(targets); final BuildResult result = await buildSystem.build(target, environment, buildSystemConfig: BuildSystemConfig( resourcePoolSize: argResults.wasParsed('resource-pool-size') - ? int.tryParse(argResults['resource-pool-size']) + ? int.tryParse(stringArg('resource-pool-size')) : null, )); if (!result.success) { diff --git a/packages/flutter_tools/lib/src/commands/attach.dart b/packages/flutter_tools/lib/src/commands/attach.dart index 04e86d8757..3b66dfcdb1 100644 --- a/packages/flutter_tools/lib/src/commands/attach.dart +++ b/packages/flutter_tools/lib/src/commands/attach.dart @@ -223,7 +223,7 @@ class AttachCommand extends FlutterCommand { FuchsiaIsolateDiscoveryProtocol isolateDiscoveryProtocol; try { isolateDiscoveryProtocol = device.getIsolateDiscoveryProtocol(module); - observatoryUri = Stream.fromFuture(isolateDiscoveryProtocol.uri).asBroadcastStream(); + observatoryUri = Stream.value(await isolateDiscoveryProtocol.uri).asBroadcastStream(); } catch (_) { isolateDiscoveryProtocol?.dispose(); final List ports = device.portForwarder.forwardedPorts.toList(); diff --git a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart index d264825448..5e992f4623 100644 --- a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart +++ b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart @@ -74,7 +74,7 @@ class BuildFuchsiaCommand extends BuildSubCommand { await buildFuchsia( fuchsiaProject: flutterProject.fuchsia, target: targetFile, - targetPlatform: getTargetPlatformForName(argResults['target-platform']), + targetPlatform: getTargetPlatformForName(stringArg('target-platform')), buildInfo: buildInfo, runnerPackageSource: stringArg('runner-source'), ); diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index 7e9b1246fc..12456fd19e 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart @@ -204,10 +204,11 @@ class Plugin { if (!(value is YamlMap)) { return false; } - if (value.containsKey('default_package')) { + final YamlMap yamlValue = value as YamlMap; + if (yamlValue.containsKey('default_package')) { return false; } - return !validate(value); + return !validate(yamlValue); } final List errors = []; if (isInvalid(AndroidPlugin.kConfigKey, AndroidPlugin.validate)) { @@ -246,7 +247,7 @@ class Plugin { if (!platformsYaml.containsKey(platformKey)) { return false; } - if (platformsYaml[platformKey].containsKey('default_package')) { + if ((platformsYaml[platformKey] as YamlMap).containsKey('default_package')) { return false; } return true; @@ -276,13 +277,13 @@ Plugin _pluginFromPubspec(String name, Uri packageRoot) { return null; } final String packageRootPath = fs.path.fromUri(packageRoot); - final YamlMap dependencies = pubspec['dependencies']; + final YamlMap dependencies = pubspec['dependencies'] as YamlMap; printTrace('Found plugin $name at $packageRootPath'); return Plugin.fromYaml( name, packageRootPath, flutterConfig['plugin'] as YamlMap, - dependencies == null ? [] : [...dependencies.keys], + dependencies == null ? [] : [...dependencies.keys.cast()], ); } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart index 1b1a8ed76f..da49f9dd1b 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart @@ -5,14 +5,13 @@ import 'package:args/command_runner.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/assemble.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import '../../src/common.dart'; +import '../../src/context.dart'; import '../../src/testbed.dart'; void main() { @@ -29,9 +28,8 @@ void main() { }); final CommandRunner commandRunner = createTestCommandRunner(AssembleCommand()); await commandRunner.run(['assemble', '-o Output', 'debug_macos_bundle_flutter_assets']); - final BufferLogger bufferLogger = logger; - expect(bufferLogger.traceText, contains('build succeeded.')); + expect(testLogger.traceText, contains('build succeeded.')); }); testbed.test('Throws ToolExit if not provided with output', () async { @@ -57,7 +55,6 @@ void main() { }); testbed.test('Does not log stack traces during build failure', () async { - final BufferLogger bufferLogger = logger; final StackTrace testStackTrace = StackTrace.current; when(buildSystem.build(any, any, buildSystemConfig: anyNamed('buildSystemConfig'))) .thenAnswer((Invocation invocation) async { @@ -69,8 +66,8 @@ void main() { await expectLater(commandRunner.run(['assemble', '-o Output', 'debug_macos_bundle_flutter_assets']), throwsA(isInstanceOf())); - expect(bufferLogger.errorText, contains('bar')); - expect(bufferLogger.errorText, isNot(contains(testStackTrace.toString()))); + expect(testLogger.errorText, contains('bar')); + expect(testLogger.errorText, isNot(contains(testStackTrace.toString()))); }); testbed.test('Only writes input and output files when the values change', () async { diff --git a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart index e100bc6b85..5ad7ad58aa 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart @@ -306,7 +306,7 @@ void main() { ), )..called(1); - final List flutterDevices = verificationResult.captured.first; + final List flutterDevices = verificationResult.captured.first as List; expect(flutterDevices, hasLength(1)); // Validate that the attach call built a flutter device with the right diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_aot_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_aot_test.dart index ccd18a0efc..a91dd88c20 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_aot_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_aot_test.dart @@ -47,7 +47,7 @@ void main() { '--no-pub', ]); - final Environment environment = verify(buildSystem.build(any, captureAny)).captured.single; + final Environment environment = verify(buildSystem.build(any, captureAny)).captured.single as Environment; expect(environment.defines, { kTargetFile: fs.path.absolute(fs.path.join('lib', 'main.dart')), kBuildMode: 'release', diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart index 7ca537dd3a..95339cd833 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart @@ -7,14 +7,12 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build.dart'; import 'package:flutter_tools/src/commands/build_linux.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/linux/makefile.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:mockito/mockito.dart'; @@ -142,7 +140,6 @@ void main() { }); testUsingContext('Linux build does not spew stdout to status logger', () async { - final BufferLogger bufferLogger = logger; final BuildCommand command = BuildCommand(); applyMocksToCommand(command); setUpMockProjectFilesForBuild(); @@ -151,8 +148,8 @@ void main() { await createTestCommandRunner(command).run( const ['build', 'linux', '--debug'] ); - expect(bufferLogger.statusText, isNot(contains('STDOUT STUFF'))); - expect(bufferLogger.traceText, contains('STDOUT STUFF')); + expect(testLogger.statusText, isNot(contains('STDOUT STUFF'))); + expect(testLogger.traceText, contains('STDOUT STUFF')); }, overrides: { FileSystem: () => MemoryFileSystem(), ProcessManager: () => mockProcessManager, @@ -230,8 +227,7 @@ BINARY_NAME=fizz_bar const ['build', 'linux'] ); - final BufferLogger bufferLogger = logger; - expect(bufferLogger.statusText, contains('🚧')); + expect(testLogger.statusText, contains('🚧')); }, overrides: { FileSystem: () => MemoryFileSystem(), ProcessManager: () => mockProcessManager, diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart index bfdd4a4c2e..de6a7e78ea 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart @@ -7,7 +7,6 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; @@ -15,7 +14,6 @@ import 'package:flutter_tools/src/commands/build.dart'; import 'package:flutter_tools/src/commands/build_macos.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/ios/xcodeproj.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:mockito/mockito.dart'; @@ -128,7 +126,6 @@ void main() { }); testUsingContext('macOS build does not spew stdout to status logger', () async { - final BufferLogger bufferLogger = logger; final BuildCommand command = BuildCommand(); applyMocksToCommand(command); createMinimalMockProjectFiles(); @@ -137,8 +134,8 @@ void main() { await createTestCommandRunner(command).run( const ['build', 'macos', '--debug'] ); - expect(bufferLogger.statusText, isNot(contains('STDOUT STUFF'))); - expect(bufferLogger.traceText, contains('STDOUT STUFF')); + expect(testLogger.statusText, isNot(contains('STDOUT STUFF'))); + expect(testLogger.traceText, contains('STDOUT STUFF')); }, overrides: { FileSystem: () => MemoryFileSystem(), ProcessManager: () => mockProcessManager, diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart index 3709ccf8c2..6afff5e77d 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart @@ -71,7 +71,7 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; expect(await runner.run(), 1); })); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart index c3f036475b..0a942f2b04 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart @@ -6,14 +6,12 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build.dart'; import 'package:flutter_tools/src/commands/build_windows.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/windows/visual_studio.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; @@ -109,7 +107,6 @@ void main() { }); testUsingContext('Windows build does not spew stdout to status logger', () async { - final BufferLogger bufferLogger = logger; final BuildCommand command = BuildCommand(); applyMocksToCommand(command); fs.file(solutionPath).createSync(recursive: true); @@ -130,8 +127,8 @@ void main() { await createTestCommandRunner(command).run( const ['build', 'windows'] ); - expect(bufferLogger.statusText, isNot(contains('STDOUT STUFF'))); - expect(bufferLogger.traceText, contains('STDOUT STUFF')); + expect(testLogger.statusText, isNot(contains('STDOUT STUFF'))); + expect(testLogger.traceText, contains('STDOUT STUFF')); }, overrides: { FileSystem: () => MemoryFileSystem(style: FileSystemStyle.windows), ProcessManager: () => mockProcessManager, @@ -199,8 +196,7 @@ void main() { const ['build', 'windows'] ); - final BufferLogger bufferLogger = logger; - expect(bufferLogger.statusText, contains('🚧')); + expect(testLogger.statusText, contains('🚧')); }, overrides: { FileSystem: () => MemoryFileSystem(style: FileSystemStyle.windows), ProcessManager: () => mockProcessManager, diff --git a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart index 59c4ce5f39..b4a9a0faed 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart @@ -69,11 +69,10 @@ void main() { final MockFile mockFile = MockFile(); when(mockFile.existsSync()).thenReturn(true); - final BufferLogger logger = context.get(); when(mockFile.deleteSync(recursive: true)).thenThrow(const FileSystemException('Deletion failed')); final CleanCommand command = CleanCommand(); command.deleteFile(mockFile); - expect(logger.errorText, contains('A program may still be using a file')); + expect(testLogger.errorText, contains('A program may still be using a file')); verify(mockFile.deleteSync(recursive: true)).called(1); }, overrides: { Platform: () => windowsPlatform, @@ -88,10 +87,9 @@ void main() { when(mockFile.existsSync()).thenThrow(const FileSystemException('OS error: Access Denied')); when(mockFile.path).thenReturn('foo.dart'); - final BufferLogger logger = context.get(); final CleanCommand command = CleanCommand(); command.deleteFile(mockFile); - expect(logger.errorText, contains('Cannot clean foo.dart')); + expect(testLogger.errorText, contains('Cannot clean foo.dart')); verifyNever(mockFile.deleteSync(recursive: true)); }, overrides: { Platform: () => windowsPlatform, diff --git a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart index 24c0e850c2..e6b0d0f935 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart @@ -10,7 +10,6 @@ import 'package:flutter_tools/src/android/android_studio.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/config.dart'; import 'package:flutter_tools/src/base/context.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/config.dart'; @@ -62,12 +61,11 @@ void main() { group('config', () { testUsingContext('machine flag', () async { - final BufferLogger logger = context.get(); final ConfigCommand command = ConfigCommand(); await command.handleMachine(); - expect(logger.statusText, isNotEmpty); - final dynamic jsonObject = json.decode(logger.statusText); + expect(testLogger.statusText, isNotEmpty); + final dynamic jsonObject = json.decode(testLogger.statusText); expect(jsonObject, isMap); expect(jsonObject.containsKey('android-studio-dir'), true); @@ -156,7 +154,6 @@ void main() { }); testUsingContext('warns the user to reload IDE', () async { - final BufferLogger logger = context.get(); final ConfigCommand configCommand = ConfigCommand(); final CommandRunner commandRunner = createTestCommandRunner(configCommand); @@ -165,13 +162,12 @@ void main() { '--enable-web' ]); - expect(logger.statusText, contains('You may need to restart any open editors')); + expect(testLogger.statusText, contains('You may need to restart any open editors')); }, overrides: { Usage: () => mockUsage, }); testUsingContext('displays which config settings are available on stable', () async { - final BufferLogger logger = context.get(); when(mockFlutterVersion.channel).thenReturn('stable'); final ConfigCommand configCommand = ConfigCommand(); final CommandRunner commandRunner = createTestCommandRunner(configCommand); @@ -188,10 +184,10 @@ void main() { 'config', ]); - expect(logger.statusText, contains('enable-web: true (Unavailable)')); - expect(logger.statusText, contains('enable-linux-desktop: true (Unavailable)')); - expect(logger.statusText, contains('enable-windows-desktop: true (Unavailable)')); - expect(logger.statusText, contains('enable-macos-desktop: true (Unavailable)')); + expect(testLogger.statusText, contains('enable-web: true (Unavailable)')); + expect(testLogger.statusText, contains('enable-linux-desktop: true (Unavailable)')); + expect(testLogger.statusText, contains('enable-windows-desktop: true (Unavailable)')); + expect(testLogger.statusText, contains('enable-macos-desktop: true (Unavailable)')); verifyNoAnalytics(); }, overrides: { AndroidStudio: () => mockAndroidStudio, diff --git a/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart index 8d5983656f..d504f37081 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart @@ -6,6 +6,7 @@ import 'dart:async'; import 'package:flutter_tools/src/android/android_workflow.dart'; import 'package:flutter_tools/src/base/logger.dart'; +import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/commands/daemon.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart'; import 'package:flutter_tools/src/globals.dart'; @@ -65,7 +66,7 @@ void main() { }); expect(response['id'], isNull); expect(response['event'], 'daemon.logMessage'); - final Map logMessage = response['params'].cast(); + final Map logMessage = castStringKeyedMap(response['params']).cast(); expect(logMessage['level'], 'error'); expect(logMessage['message'], 'daemon.logMessage test'); await responses.close(); @@ -232,7 +233,7 @@ void main() { expect(response['event'], 'device.added'); expect(response['params'], isMap); - final Map params = response['params']; + final Map params = castStringKeyedMap(response['params']); expect(params['platform'], isNotEmpty); // the mock device has a platform of 'android-arm' await responses.close(); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart index 3686e4beb2..535783ee18 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart @@ -485,7 +485,7 @@ void main() { platformArgs: anyNamed('platformArgs'), prebuiltApplication: anyNamed('prebuiltApplication'), )).thenAnswer((Invocation invocation) async { - debuggingOptions = invocation.namedArguments[#debuggingOptions]; + debuggingOptions = invocation.namedArguments[#debuggingOptions] as DebuggingOptions; return mockLaunchResult; }); when(mockDevice.isAppInstalled(any)) diff --git a/packages/flutter_tools/test/commands.shard/hermetic/generate_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/generate_test.dart index 51391ba945..2678b9ac2b 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/generate_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/generate_test.dart @@ -3,15 +3,14 @@ // found in the LICENSE file. import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/codegen.dart'; import 'package:flutter_tools/src/commands/generate.dart'; import 'package:flutter_tools/src/convert.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import '../../src/common.dart'; +import '../../src/context.dart'; import '../../src/mocks.dart'; import '../../src/testbed.dart'; @@ -47,7 +46,6 @@ void main() { test('Outputs error information from flutter generate', () => testbed.run(() async { final GenerateCommand command = GenerateCommand(); - final BufferLogger bufferLogger = logger; applyMocksToCommand(command); fs.file(fs.path.join('lib', 'main.dart')) ..createSync(recursive: true); @@ -71,10 +69,10 @@ void main() { await createTestCommandRunner(command) .run(const ['generate']); - expect(bufferLogger.errorText, contains('a')); - expect(bufferLogger.errorText, contains('b')); - expect(bufferLogger.errorText, contains('foo builder')); - expect(bufferLogger.errorText, isNot(contains('Error reading error'))); + expect(testLogger.errorText, contains('a')); + expect(testLogger.errorText, contains('b')); + expect(testLogger.errorText, contains('foo builder')); + expect(testLogger.errorText, isNot(contains('Error reading error'))); })); } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart index 3794ff2bd4..2e64f353a4 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart @@ -27,7 +27,7 @@ void main() { when(cache.isUpToDate()).thenReturn(false); when(cache.updateAll(any)).thenAnswer((Invocation invocation) { - artifacts = invocation.positionalArguments.first; + artifacts = invocation.positionalArguments.first as Set; return Future.value(null); }); flutterVersion = MockFlutterVersion(); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart index f58c8c900f..45a7025422 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart @@ -117,7 +117,7 @@ class MockProcessManager extends Mock implements ProcessManager { return ProcessResult(0, 0, 'v10.0.0\r\nv20.0.0', ''); } if (command[0] == 'git' && command[1] == 'checkout') { - version = command[2]; + version = command[2] as String; } return ProcessResult(0, 0, '', ''); } diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart index 8c301683f4..9cc6bf958b 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/build_bundle_test.dart @@ -211,7 +211,7 @@ void main() { fs.file('.packages').createSync(); final CommandRunner runner = createTestCommandRunner(BuildBundleCommand()); when(buildSystem.build(any, any)).thenAnswer((Invocation invocation) async { - final Environment environment = invocation.positionalArguments[1]; + final Environment environment = invocation.positionalArguments[1] as Environment; expect(environment.defines, { kTargetFile: fs.path.join('lib', 'main.dart'), kBuildMode: 'debug', diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart index 61658955bc..a6ce83f77c 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart @@ -1379,7 +1379,7 @@ class LoggingProcessManager extends LocalProcessManager { @override Future start( - List command, { + List command, { String workingDirectory, Map environment, bool includeParentEnvironment = true, diff --git a/packages/flutter_tools/test/commands.shard/permeable/test_test.dart b/packages/flutter_tools/test/commands.shard/permeable/test_test.dart index b806a3d997..dca93ca637 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/test_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/test_test.dart @@ -81,7 +81,7 @@ void main() { Cache.flutterRoot = '../..'; final ProcessResult result = await _runFlutterTest('filtering', automatedTestsDirectory, flutterTestDirectory, extraArguments: const ['--name', 'inc.*de']); - if (!result.stdout.contains('+1: All tests passed')) { + if (!(result.stdout as String).contains('+1: All tests passed')) { fail('unexpected output from test:\n\n${result.stdout}\n-- end stdout --\n\n'); } expect(result.exitCode, 0); @@ -91,7 +91,7 @@ void main() { Cache.flutterRoot = '../..'; final ProcessResult result = await _runFlutterTest('filtering', automatedTestsDirectory, flutterTestDirectory, extraArguments: const ['--plain-name', 'include']); - if (!result.stdout.contains('+1: All tests passed')) { + if (!(result.stdout as String).contains('+1: All tests passed')) { fail('unexpected output from test:\n\n${result.stdout}\n-- end stdout --\n\n'); } expect(result.exitCode, 0); @@ -101,14 +101,15 @@ void main() { Cache.flutterRoot = '../..'; final ProcessResult result = await _runFlutterTest('trivial', automatedTestsDirectory, flutterTestDirectory, extraArguments: const ['--verbose']); - if ((!result.stdout.contains('+1: All tests passed')) || - (!result.stdout.contains('test 0: starting shell process')) || - (!result.stdout.contains('test 0: deleting temporary directory')) || - (!result.stdout.contains('test 0: finished')) || - (!result.stdout.contains('test package returned with exit code 0'))) { + final String stdout = result.stdout as String; + if ((!stdout.contains('+1: All tests passed')) || + (!stdout.contains('test 0: starting shell process')) || + (!stdout.contains('test 0: deleting temporary directory')) || + (!stdout.contains('test 0: finished')) || + (!stdout.contains('test package returned with exit code 0'))) { fail('unexpected output from test:\n\n${result.stdout}\n-- end stdout --\n\n'); } - if (result.stderr.isNotEmpty) { + if ((result.stderr as String).isNotEmpty) { fail('unexpected error output from test:\n\n${result.stderr}\n-- end stderr --\n\n'); } expect(result.exitCode, 0); @@ -118,14 +119,15 @@ void main() { Cache.flutterRoot = '../..'; final ProcessResult result = await _runFlutterTest(null, automatedTestsDirectory, flutterTestDirectory + '/child_directory', extraArguments: const ['--verbose']); - if ((!result.stdout.contains('+2: All tests passed')) || - (!result.stdout.contains('test 0: starting shell process')) || - (!result.stdout.contains('test 0: deleting temporary directory')) || - (!result.stdout.contains('test 0: finished')) || - (!result.stdout.contains('test package returned with exit code 0'))) { + final String stdout = result.stdout as String; + if ((!stdout.contains('+2: All tests passed')) || + (!stdout.contains('test 0: starting shell process')) || + (!stdout.contains('test 0: deleting temporary directory')) || + (!stdout.contains('test 0: finished')) || + (!stdout.contains('test package returned with exit code 0'))) { fail('unexpected output from test:\n\n${result.stdout}\n-- end stdout --\n\n'); } - if (result.stderr.isNotEmpty) { + if ((result.stderr as String).isNotEmpty) { fail('unexpected error output from test:\n\n${result.stderr}\n-- end stderr --\n\n'); } expect(result.exitCode, 0); @@ -160,7 +162,7 @@ Future _testFile( ); expect(exec.exitCode, exitCode); - final List output = exec.stdout.split('\n'); + final List output = (exec.stdout as String).split('\n'); if (output.first == 'Waiting for another flutter command to release the startup lock...') { output.removeAt(0); } @@ -168,7 +170,7 @@ Future _testFile( output.removeAt(0); } output.add('<>'); - output.addAll(exec.stderr.split('\n')); + output.addAll((exec.stderr as String).split('\n')); final List expectations = fs.file(fullTestExpectation).readAsLinesSync(); bool allowSkip = false; int expectationLineNumber = 0; diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart index 371986cc5a..bfdf1a1c25 100644 --- a/packages/flutter_tools/test/general.shard/analytics_test.dart +++ b/packages/flutter_tools/test/general.shard/analytics_test.dart @@ -94,7 +94,7 @@ void main() { }); testUsingContext('Usage records one feature in experiment setting', () async { - when(mockFlutterConfig.getValue(flutterWebFeature.configSetting)) + when(mockFlutterConfig.getValue(flutterWebFeature.configSetting) as bool) .thenReturn(true); final Usage usage = Usage(); usage.sendCommand('test'); @@ -112,11 +112,11 @@ void main() { }); testUsingContext('Usage records multiple features in experiment setting', () async { - when(mockFlutterConfig.getValue(flutterWebFeature.configSetting)) + when(mockFlutterConfig.getValue(flutterWebFeature.configSetting) as bool) .thenReturn(true); - when(mockFlutterConfig.getValue(flutterLinuxDesktopFeature.configSetting)) + when(mockFlutterConfig.getValue(flutterLinuxDesktopFeature.configSetting) as bool) .thenReturn(true); - when(mockFlutterConfig.getValue(flutterMacOSDesktopFeature.configSetting)) + when(mockFlutterConfig.getValue(flutterMacOSDesktopFeature.configSetting) as bool) .thenReturn(true); final Usage usage = Usage(); usage.sendCommand('test'); @@ -201,7 +201,7 @@ void main() { testUsingContext('compound command usage path', () async { final BuildCommand buildCommand = BuildCommand(); - final FlutterCommand buildApkCommand = buildCommand.subcommands['apk']; + final FlutterCommand buildApkCommand = buildCommand.subcommands['apk'] as FlutterCommand; expect(await buildApkCommand.usagePath, 'build/apk'); }, overrides: { Usage: () => mockUsage, diff --git a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart index 19670e0e4b..5596908b57 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart @@ -3,13 +3,11 @@ // found in the LICENSE file. import 'package:file/memory.dart'; - -import 'package:flutter_tools/src/android/gradle_utils.dart'; import 'package:flutter_tools/src/android/gradle_errors.dart'; +import 'package:flutter_tools/src/android/gradle_utils.dart'; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; @@ -57,8 +55,7 @@ at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)'''; expect(testErrorMessage(errorMessage, networkErrorHandler), isTrue); expect(await networkErrorHandler.handler(), equals(GradleBuildStatus.retry)); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, contains( 'Gradle threw an error while trying to update itself. ' 'Retrying the update...' @@ -86,8 +83,7 @@ at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)'''; expect(testErrorMessage(errorMessage, networkErrorHandler), isTrue); expect(await networkErrorHandler.handler(), equals(GradleBuildStatus.retry)); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, contains( 'Gradle threw an error while trying to update itself. ' 'Retrying the update...' @@ -106,8 +102,7 @@ Exception in thread "main" java.lang.RuntimeException: Timeout of 120000 reached expect(testErrorMessage(errorMessage, networkErrorHandler), isTrue); expect(await networkErrorHandler.handler(), equals(GradleBuildStatus.retry)); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, contains( 'Gradle threw an error while trying to update itself. ' 'Retrying the update...' @@ -142,8 +137,7 @@ Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host clos expect(testErrorMessage(errorMessage, networkErrorHandler), isTrue); expect(await networkErrorHandler.handler(), equals(GradleBuildStatus.retry)); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, contains( 'Gradle threw an error while trying to update itself. ' 'Retrying the update...' @@ -170,8 +164,7 @@ Exception in thread "main" java.io.FileNotFoundException: https://downloads.grad expect(testErrorMessage(errorMessage, networkErrorHandler), isTrue); expect(await networkErrorHandler.handler(), equals(GradleBuildStatus.retry)); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, contains( 'Gradle threw an error while trying to update itself. ' 'Retrying the update...' @@ -209,8 +202,7 @@ Exception in thread "main" java.net.SocketException: Connection reset expect(testErrorMessage(errorMessage, networkErrorHandler), isTrue); expect(await networkErrorHandler.handler(), equals(GradleBuildStatus.retry)); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, contains( 'Gradle threw an error while trying to update itself. ' 'Retrying the update...' @@ -228,13 +220,12 @@ Command: /home/android/gradlew assembleRelease expect(testErrorMessage(errorMessage, permissionDeniedErrorHandler), isTrue); expect(await permissionDeniedErrorHandler.handler(), equals(GradleBuildStatus.exit)); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains('Gradle does not have execution permission.'), ); expect( - logger.statusText, + testLogger.statusText, contains( 'You should change the ownership of the project directory to your user, ' 'or move the project to a directory with execute permissions.' @@ -302,8 +293,7 @@ Command: /home/android/gradlew assembleRelease usesAndroidX: false, ); - final BufferLogger logger = context.get(); - expect(logger.statusText, + expect(testLogger.statusText, contains( 'AndroidX incompatibilities may have caused this build to fail. ' 'Please migrate your app to AndroidX. See https://goo.gl/CP92wY.' @@ -361,8 +351,7 @@ Command: /home/android/gradlew assembleRelease shouldBuildPluginAsAar: false, ); - final BufferLogger logger = context.get(); - expect(logger.statusText, + expect(testLogger.statusText, contains( 'The built failed likely due to AndroidX incompatibilities in a plugin. ' 'The tool is about to try using Jetfier to solve the incompatibility.' @@ -396,13 +385,12 @@ Command: /home/android/gradlew assembleRelease testUsingContext('handler', () async { expect(await permissionDeniedErrorHandler.handler(), equals(GradleBuildStatus.exit)); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains('Gradle does not have execution permission.'), ); expect( - logger.statusText, + testLogger.statusText, contains( 'You should change the ownership of the project directory to your user, ' 'or move the project to a directory with execute permissions.' @@ -427,9 +415,8 @@ Command: /home/android/gradlew assembleRelease project: FlutterProject.current(), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( 'Unable to download needed Android SDK components, as the ' 'following licenses have not been accepted:\n' @@ -508,16 +495,15 @@ assembleFooTest project: FlutterProject.current(), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( 'Gradle project does not define a task suitable ' 'for the requested build.' ) ); expect( - logger.statusText, + testLogger.statusText, contains( 'The android/app/build.gradle file defines product ' 'flavors: flavor1, flavor_2 ' @@ -557,16 +543,15 @@ assembleProfile project: FlutterProject.current(), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( 'Gradle project does not define a task suitable ' 'for the requested build.' ) ); expect( - logger.statusText, + testLogger.statusText, contains( 'The android/app/build.gradle file does not define any custom product flavors. ' 'You cannot use the --flavor option.' diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart index 3e18716bc4..dd0455af86 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart @@ -1604,9 +1604,8 @@ plugin2=${plugin2.path} localGradleErrors: const [], ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains('Built build/app/outputs/apk/release/app-release.apk (0.0MB)'), ); @@ -1652,13 +1651,12 @@ plugin2=${plugin2.path} target: '', ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains('Built build/outputs/repo'), ); expect( - logger.statusText.contains('Consuming the Module'), + testLogger.statusText.contains('Consuming the Module'), isFalse, ); @@ -1745,7 +1743,7 @@ plugin2=${plugin2.path} environment: anyNamed('environment'), workingDirectory: anyNamed('workingDirectory') ), - ).captured.last; + ).captured.last as List; expect(actualGradlewCall, contains('/android/gradlew')); expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_arm')); @@ -1821,7 +1819,7 @@ plugin2=${plugin2.path} environment: anyNamed('environment'), workingDirectory: anyNamed('workingDirectory'), ), - ).captured.last; + ).captured.last as List; expect(actualGradlewCall, contains('/.android/gradlew')); expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_arm')); @@ -1847,9 +1845,8 @@ plugin2=${plugin2.path} repoDirectory: fs.directory('build/'), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( '\n' 'Consuming the Module\n' @@ -1900,9 +1897,8 @@ plugin2=${plugin2.path} repoDirectory: fs.directory('build/'), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( '\n' 'Consuming the Module\n' @@ -1940,9 +1936,8 @@ plugin2=${plugin2.path} repoDirectory: fs.directory('build/'), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( '\n' 'Consuming the Module\n' @@ -1980,9 +1975,8 @@ plugin2=${plugin2.path} repoDirectory: fs.directory('build/'), ); - final BufferLogger logger = context.get(); expect( - logger.statusText, + testLogger.statusText, contains( '\n' 'Consuming the Module\n' @@ -2047,7 +2041,7 @@ FlutterProject generateFakeAppBundle(String directoryName, String fileName) { return project; } -Platform fakePlatform(String name) { +FakePlatform fakePlatform(String name) { return FakePlatform.fromPlatform(const LocalPlatform()) ..operatingSystem = name ..stdoutSupportsAnsi = false; diff --git a/packages/flutter_tools/test/general.shard/application_package_test.dart b/packages/flutter_tools/test/general.shard/application_package_test.dart index 9afad1a2f6..38543a4dbe 100644 --- a/packages/flutter_tools/test/general.shard/application_package_test.dart +++ b/packages/flutter_tools/test/general.shard/application_package_test.dart @@ -11,7 +11,6 @@ import 'package:flutter_tools/src/android/android_sdk.dart'; import 'package:flutter_tools/src/application_package.dart'; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/os.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; @@ -179,25 +178,22 @@ void main() { testUsingContext('Error when parsing manifest with no Activity that has enabled set to true nor has no value for its enabled field', () { final ApkManifestData data = ApkManifestData.parseFromXmlDump(_aaptDataWithNoEnabledActivity); expect(data, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, 'Error running io.flutter.examples.hello_world. Default activity not found\n'); + testLogger.errorText, 'Error running io.flutter.examples.hello_world. Default activity not found\n'); }, overrides: noColorTerminalOverride); testUsingContext('Error when parsing manifest with no Activity that has action set to android.intent.action.MAIN', () { final ApkManifestData data = ApkManifestData.parseFromXmlDump(_aaptDataWithNoMainActivity); expect(data, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, 'Error running io.flutter.examples.hello_world. Default activity not found\n'); + testLogger.errorText, 'Error running io.flutter.examples.hello_world. Default activity not found\n'); }, overrides: noColorTerminalOverride); testUsingContext('Error when parsing manifest with no Activity that has category set to android.intent.category.LAUNCHER', () { final ApkManifestData data = ApkManifestData.parseFromXmlDump(_aaptDataWithNoLauncherActivity); expect(data, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, 'Error running io.flutter.examples.hello_world. Default activity not found\n'); + testLogger.errorText, 'Error running io.flutter.examples.hello_world. Default activity not found\n'); }, overrides: noColorTerminalOverride); testUsingContext('Parsing manifest with Activity that has multiple category, android.intent.category.LAUNCHER and android.intent.category.DEFAULT', () { @@ -219,11 +215,10 @@ void main() { testUsingContext('Error on non-existing file', () { final PrebuiltIOSApp iosApp = - IOSApp.fromPrebuiltApp(fs.file('not_existing.ipa')); + IOSApp.fromPrebuiltApp(fs.file('not_existing.ipa')) as PrebuiltIOSApp; expect(iosApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, + testLogger.errorText, 'File "not_existing.ipa" does not exist. Use an app bundle or an ipa.\n', ); }, overrides: overrides); @@ -231,20 +226,18 @@ void main() { testUsingContext('Error on non-app-bundle folder', () { fs.directory('regular_folder').createSync(); final PrebuiltIOSApp iosApp = - IOSApp.fromPrebuiltApp(fs.file('regular_folder')); + IOSApp.fromPrebuiltApp(fs.file('regular_folder')) as PrebuiltIOSApp; expect(iosApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, 'Folder "regular_folder" is not an app bundle.\n'); + testLogger.errorText, 'Folder "regular_folder" is not an app bundle.\n'); }, overrides: overrides); testUsingContext('Error on no info.plist', () { fs.directory('bundle.app').createSync(); - final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('bundle.app')); + final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('bundle.app')) as PrebuiltIOSApp; expect(iosApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, + testLogger.errorText, 'Invalid prebuilt iOS app. Does not contain Info.plist.\n', ); }, overrides: overrides); @@ -252,11 +245,10 @@ void main() { testUsingContext('Error on bad info.plist', () { fs.directory('bundle.app').createSync(); fs.file('bundle.app/Info.plist').writeAsStringSync(badPlistData); - final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('bundle.app')); + final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('bundle.app')) as PrebuiltIOSApp; expect(iosApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, + testLogger.errorText, contains( 'Invalid prebuilt iOS app. Info.plist does not contain bundle identifier\n'), ); @@ -265,9 +257,8 @@ void main() { testUsingContext('Success with app bundle', () { fs.directory('bundle.app').createSync(); fs.file('bundle.app/Info.plist').writeAsStringSync(plistData); - final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('bundle.app')); - final BufferLogger logger = context.get(); - expect(logger.errorText, isEmpty); + final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('bundle.app')) as PrebuiltIOSApp; + expect(testLogger.errorText, isEmpty); expect(iosApp.bundleDir.path, 'bundle.app'); expect(iosApp.id, 'fooBundleId'); expect(iosApp.bundleName, 'bundle.app'); @@ -276,11 +267,10 @@ void main() { testUsingContext('Bad ipa zip-file, no payload dir', () { fs.file('app.ipa').createSync(); when(os.unzip(fs.file('app.ipa'), any)).thenAnswer((Invocation _) { }); - final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('app.ipa')); + final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('app.ipa')) as PrebuiltIOSApp; expect(iosApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, + testLogger.errorText, 'Invalid prebuilt iOS ipa. Does not contain a "Payload" directory.\n', ); }, overrides: overrides); @@ -288,11 +278,11 @@ void main() { testUsingContext('Bad ipa zip-file, two app bundles', () { fs.file('app.ipa').createSync(); when(os.unzip(any, any)).thenAnswer((Invocation invocation) { - final File zipFile = invocation.positionalArguments[0]; + final File zipFile = invocation.positionalArguments[0] as File; if (zipFile.path != 'app.ipa') { return null; } - final Directory targetDirectory = invocation.positionalArguments[1]; + final Directory targetDirectory = invocation.positionalArguments[1] as Directory; final String bundlePath1 = fs.path.join(targetDirectory.path, 'Payload', 'bundle1.app'); final String bundlePath2 = @@ -300,21 +290,20 @@ void main() { fs.directory(bundlePath1).createSync(recursive: true); fs.directory(bundlePath2).createSync(recursive: true); }); - final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('app.ipa')); + final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('app.ipa')) as PrebuiltIOSApp; expect(iosApp, isNull); - final BufferLogger logger = context.get(); - expect(logger.errorText, + expect(testLogger.errorText, 'Invalid prebuilt iOS ipa. Does not contain a single app bundle.\n'); }, overrides: overrides); testUsingContext('Success with ipa', () { fs.file('app.ipa').createSync(); when(os.unzip(any, any)).thenAnswer((Invocation invocation) { - final File zipFile = invocation.positionalArguments[0]; + final File zipFile = invocation.positionalArguments[0] as File; if (zipFile.path != 'app.ipa') { return null; } - final Directory targetDirectory = invocation.positionalArguments[1]; + final Directory targetDirectory = invocation.positionalArguments[1] as Directory; final Directory bundleAppDir = fs.directory( fs.path.join(targetDirectory.path, 'Payload', 'bundle.app')); bundleAppDir.createSync(recursive: true); @@ -322,9 +311,8 @@ void main() { .file(fs.path.join(bundleAppDir.path, 'Info.plist')) .writeAsStringSync(plistData); }); - final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('app.ipa')); - final BufferLogger logger = context.get(); - expect(logger.errorText, isEmpty); + final PrebuiltIOSApp iosApp = IOSApp.fromPrebuiltApp(fs.file('app.ipa')) as PrebuiltIOSApp; + expect(testLogger.errorText, isEmpty); expect(iosApp.bundleDir.path, endsWith('bundle.app')); expect(iosApp.id, 'fooBundleId'); expect(iosApp.bundleName, 'bundle.app'); @@ -334,7 +322,7 @@ void main() { fs.file('pubspec.yaml').createSync(); fs.file('.packages').createSync(); final BuildableIOSApp iosApp = await IOSApp.fromIosProject( - FlutterProject.fromDirectory(fs.currentDirectory).ios); + FlutterProject.fromDirectory(fs.currentDirectory).ios) as BuildableIOSApp; expect(iosApp, null); }, overrides: overrides); @@ -344,7 +332,7 @@ void main() { fs.file('.packages').createSync(); fs.file('ios/FooBar.xcodeproj').createSync(recursive: true); final BuildableIOSApp iosApp = await IOSApp.fromIosProject( - FlutterProject.fromDirectory(fs.currentDirectory).ios); + FlutterProject.fromDirectory(fs.currentDirectory).ios) as BuildableIOSApp; expect(iosApp, null); }, overrides: overrides); @@ -354,7 +342,7 @@ void main() { fs.file('.packages').createSync(); fs.file('ios/Runner.xcodeproj').createSync(recursive: true); final BuildableIOSApp iosApp = await IOSApp.fromIosProject( - FlutterProject.fromDirectory(fs.currentDirectory).ios); + FlutterProject.fromDirectory(fs.currentDirectory).ios) as BuildableIOSApp; expect(iosApp, null); }, overrides: overrides); @@ -370,11 +358,10 @@ void main() { testUsingContext('Error on non-existing file', () { final PrebuiltFuchsiaApp fuchsiaApp = - FuchsiaApp.fromPrebuiltApp(fs.file('not_existing.far')); + FuchsiaApp.fromPrebuiltApp(fs.file('not_existing.far')) as PrebuiltFuchsiaApp; expect(fuchsiaApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, + testLogger.errorText, 'File "not_existing.far" does not exist or is not a .far file. Use far archive.\n', ); }, overrides: overrides); @@ -382,27 +369,25 @@ void main() { testUsingContext('Error on non-far file', () { fs.directory('regular_folder').createSync(); final PrebuiltFuchsiaApp fuchsiaApp = - FuchsiaApp.fromPrebuiltApp(fs.file('regular_folder')); + FuchsiaApp.fromPrebuiltApp(fs.file('regular_folder')) as PrebuiltFuchsiaApp; expect(fuchsiaApp, isNull); - final BufferLogger logger = context.get(); expect( - logger.errorText, + testLogger.errorText, 'File "regular_folder" does not exist or is not a .far file. Use far archive.\n', ); }, overrides: overrides); testUsingContext('Success with far file', () { fs.file('bundle.far').createSync(); - final PrebuiltFuchsiaApp fuchsiaApp = FuchsiaApp.fromPrebuiltApp(fs.file('bundle.far')); - final BufferLogger logger = context.get(); - expect(logger.errorText, isEmpty); + final PrebuiltFuchsiaApp fuchsiaApp = FuchsiaApp.fromPrebuiltApp(fs.file('bundle.far')) as PrebuiltFuchsiaApp; + expect(testLogger.errorText, isEmpty); expect(fuchsiaApp.id, 'bundle.far'); }, overrides: overrides); testUsingContext('returns null when there is no fuchsia', () async { fs.file('pubspec.yaml').createSync(); fs.file('.packages').createSync(); - final BuildableFuchsiaApp fuchsiaApp = FuchsiaApp.fromFuchsiaProject(FlutterProject.fromDirectory(fs.currentDirectory).fuchsia); + final BuildableFuchsiaApp fuchsiaApp = FuchsiaApp.fromFuchsiaProject(FlutterProject.fromDirectory(fs.currentDirectory).fuchsia) as BuildableFuchsiaApp; expect(fuchsiaApp, null); }, overrides: overrides); @@ -658,7 +643,7 @@ class MockPlistUtils extends Mock implements PlistParser { if (!file.existsSync()) { return null; } - return json.decode(file.readAsStringSync())[key]; + return json.decode(file.readAsStringSync())[key] as String; } } diff --git a/packages/flutter_tools/test/general.shard/base/fingerprint_test.dart b/packages/flutter_tools/test/general.shard/base/fingerprint_test.dart index acf26437c7..c69c404a12 100644 --- a/packages/flutter_tools/test/general.shard/base/fingerprint_test.dart +++ b/packages/flutter_tools/test/general.shard/base/fingerprint_test.dart @@ -6,6 +6,7 @@ import 'dart:convert' show json; import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/platform.dart'; +import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/fingerprint.dart'; @@ -301,7 +302,7 @@ void main() { fs.file('b.dart').writeAsStringSync('This is b'); final Fingerprint fingerprint = Fingerprint.fromBuildInputs({}, ['a.dart', 'b.dart']); - final Map jsonObject = json.decode(fingerprint.toJson()); + final Map jsonObject = castStringKeyedMap(json.decode(fingerprint.toJson())); expect(jsonObject['files'], hasLength(2)); expect(jsonObject['files']['a.dart'], '8a21a15fad560b799f6731d436c1b698'); expect(jsonObject['files']['b.dart'], '6f144e08b58cd0925328610fad7ac07c'); @@ -313,14 +314,14 @@ void main() { testUsingContext('includes framework version', () { final Fingerprint fingerprint = Fingerprint.fromBuildInputs({}, []); - final Map jsonObject = json.decode(fingerprint.toJson()); + final Map jsonObject = castStringKeyedMap(json.decode(fingerprint.toJson())); expect(jsonObject['version'], mockVersion.frameworkRevision); }, overrides: {FlutterVersion: () => mockVersion}); testUsingContext('includes provided properties', () { final Fingerprint fingerprint = Fingerprint.fromBuildInputs({'a': 'A', 'b': 'B'}, []); - final Map jsonObject = json.decode(fingerprint.toJson()); + final Map jsonObject = castStringKeyedMap(json.decode(fingerprint.toJson())); expect(jsonObject['properties'], hasLength(2)); expect(jsonObject['properties']['a'], 'A'); expect(jsonObject['properties']['b'], 'B'); @@ -348,7 +349,7 @@ void main() { }, }); final Fingerprint fingerprint = Fingerprint.fromJson(jsonString); - final Map content = json.decode(fingerprint.toJson()); + final Map content = castStringKeyedMap(json.decode(fingerprint.toJson())); expect(content, hasLength(3)); expect(content['version'], mockVersion.frameworkRevision); expect(content['properties'], hasLength(3)); diff --git a/packages/flutter_tools/test/general.shard/base/logger_test.dart b/packages/flutter_tools/test/general.shard/base/logger_test.dart index c927d36e61..0f543cfa5c 100644 --- a/packages/flutter_tools/test/general.shard/base/logger_test.dart +++ b/packages/flutter_tools/test/general.shard/base/logger_test.dart @@ -705,10 +705,9 @@ void main() { }); testUsingContext('sequential startProgress calls with BufferLogger', () async { - final BufferLogger logger = context.get(); - logger.startProgress('AAA', timeout: timeoutConfiguration.fastOperation)..stop(); - logger.startProgress('BBB', timeout: timeoutConfiguration.fastOperation)..stop(); - expect(logger.statusText, 'AAA\nBBB\n'); + testLogger.startProgress('AAA', timeout: timeoutConfiguration.fastOperation)..stop(); + testLogger.startProgress('BBB', timeout: timeoutConfiguration.fastOperation)..stop(); + expect(testLogger.statusText, 'AAA\nBBB\n'); }, overrides: { Logger: () => BufferLogger(), Platform: _kNoAnsiPlatform, diff --git a/packages/flutter_tools/test/general.shard/base/net_test.dart b/packages/flutter_tools/test/general.shard/base/net_test.dart index fdaee3362b..4c56a378dc 100644 --- a/packages/flutter_tools/test/general.shard/base/net_test.dart +++ b/packages/flutter_tools/test/general.shard/base/net_test.dart @@ -4,7 +4,6 @@ import 'dart:async'; import 'dart:convert'; -import 'dart:typed_data'; import 'package:file/file.dart'; import 'package:file/memory.dart'; @@ -365,25 +364,25 @@ class FakeHttpClientResponse implements io.HttpClientResponse { String get reasonPhrase => ''; @override - StreamSubscription listen( - void onData(Uint8List event), { + StreamSubscription> listen( + void onData(List event), { Function onError, void onDone(), bool cancelOnError, }) { if (data == null) { - return Stream.fromFuture(Future.error( + return Stream>.fromFuture(Future>.error( const io.SocketException('test'), )).listen(onData, onError: onError, onDone: onDone, cancelOnError: cancelOnError); } else { - return Stream.fromFuture(Future.value( - utf8.encode(data) as Uint8List, + return Stream>.fromFuture(Future>.value( + utf8.encode(data), )).listen(onData, onError: onError, onDone: onDone, cancelOnError: cancelOnError); } } @override - Future forEach(void Function(Uint8List element) action) async { + Future forEach(void Function(List element) action) async { if (data == null) { return Future.error(const io.SocketException('test')); } else { diff --git a/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart b/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart index eb31522d77..d9b86ccf8f 100644 --- a/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart @@ -4,6 +4,7 @@ import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/platform.dart'; +import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/build_system/exceptions.dart'; import 'package:flutter_tools/src/cache.dart'; @@ -133,7 +134,7 @@ void main() { final File stampFile = fs.file(fs.path.join(environment.buildDir.path, 'foo.stamp')); expect(stampFile.existsSync(), true); - final Map stampContents = json.decode(stampFile.readAsStringSync()); + final Map stampContents = castStringKeyedMap(json.decode(stampFile.readAsStringSync())); expect(stampContents['inputs'], ['/foo.dart']); })); diff --git a/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart b/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart index 545702afae..4bcd9dde27 100644 --- a/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart @@ -2,14 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:typed_data'; + import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/build_system/file_hash_store.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import '../../src/common.dart'; +import '../../src/context.dart'; import '../../src/testbed.dart'; void main() { @@ -34,7 +35,7 @@ void main() { expect(fs.file(fs.path.join(environment.buildDir.path, '.filecache')).existsSync(), true); - final List buffer = fs.file(fs.path.join(environment.buildDir.path, '.filecache')) + final Uint8List buffer = fs.file(fs.path.join(environment.buildDir.path, '.filecache')) .readAsBytesSync(); final FileStorage fileStorage = FileStorage.fromBuffer(buffer); @@ -51,7 +52,7 @@ void main() { await fileCache.hashFiles([file]); fileCache.persist(); final String currentHash = fileCache.currentHashes[file.path]; - final List buffer = fs.file(fs.path.join(environment.buildDir.path, '.filecache')) + final Uint8List buffer = fs.file(fs.path.join(environment.buildDir.path, '.filecache')) .readAsBytesSync(); FileStorage fileStorage = FileStorage.fromBuffer(buffer); @@ -97,7 +98,6 @@ void main() { })); test('handles failure to persist file cache', () => testbed.run(() async { - final BufferLogger bufferLogger = logger; final FakeForwardingFileSystem fakeForwardingFileSystem = FakeForwardingFileSystem(fs); final FileHashStore fileCache = FileHashStore(environment, fakeForwardingFileSystem); final String cacheFile = environment.buildDir.childFile('.filecache').path; @@ -109,11 +109,10 @@ void main() { fakeForwardingFileSystem.files[cacheFile] = mockFile; fileCache.persist(); - expect(bufferLogger.errorText, contains('Out of space!')); + expect(testLogger.errorText, contains('Out of space!')); })); test('handles failure to restore file cache', () => testbed.run(() async { - final BufferLogger bufferLogger = logger; final FakeForwardingFileSystem fakeForwardingFileSystem = FakeForwardingFileSystem(fs); final FileHashStore fileCache = FileHashStore(environment, fakeForwardingFileSystem); final String cacheFile = environment.buildDir.childFile('.filecache').path; @@ -124,14 +123,14 @@ void main() { fakeForwardingFileSystem.files[cacheFile] = mockFile; fileCache.initialize(); - expect(bufferLogger.errorText, contains('Out of space!')); + expect(testLogger.errorText, contains('Out of space!')); })); } class FakeForwardingFileSystem extends ForwardingFileSystem { FakeForwardingFileSystem(FileSystem fileSystem) : super(fileSystem); - final Map files = {}; + final Map files = {}; @override File file(dynamic path) => files[path] ?? super.file(path); diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart index 223d4411f0..9aeaf260dd 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart @@ -115,7 +115,7 @@ void main() { snapshotType: captureAnyNamed('snapshotType'), darwinArch: anyNamed('darwinArch'), additionalArgs: anyNamed('additionalArgs') - )).captured.single; + )).captured.single as SnapshotType; expect(snapshotType.platform, TargetPlatform.android_arm64); expect(snapshotType.mode, BuildMode.release); diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart index 8fcf9907ab..0e00911333 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart @@ -118,7 +118,7 @@ flutter_tools:lib/'''); })); test('kernel_snapshot handles null result from kernel compilation', () => testbed.run(() async { - final FakeKernelCompilerFactory fakeKernelCompilerFactory = kernelCompilerFactory; + final FakeKernelCompilerFactory fakeKernelCompilerFactory = kernelCompilerFactory as FakeKernelCompilerFactory; fakeKernelCompilerFactory.kernelCompiler = MockKernelCompiler(); when(fakeKernelCompilerFactory.kernelCompiler.compile( sdkRoot: anyNamed('sdkRoot'), diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart index bf557eb265..2122977178 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart @@ -90,7 +90,7 @@ void main() { .createSync(recursive: true); when(processManager.run(any)).thenAnswer((Invocation invocation) async { - final List arguments = invocation.positionalArguments.first; + final List arguments = invocation.positionalArguments.first as List; final String sourcePath = arguments[arguments.length - 2]; final String targetPath = arguments.last; final Directory source = fs.directory(sourcePath); diff --git a/packages/flutter_tools/test/general.shard/bundle_shim_test.dart b/packages/flutter_tools/test/general.shard/bundle_shim_test.dart index 6b678c1645..3b8be83076 100644 --- a/packages/flutter_tools/test/general.shard/bundle_shim_test.dart +++ b/packages/flutter_tools/test/general.shard/bundle_shim_test.dart @@ -25,7 +25,7 @@ void main() { test('Copies assets to expected directory after building', () => testbed.run(() async { when(buildSystem.build(any, any)).thenAnswer((Invocation invocation) async { - final Environment environment = invocation.positionalArguments[1]; + final Environment environment = invocation.positionalArguments[1] as Environment; environment.outputDir.childFile('kernel_blob.bin').createSync(recursive: true); environment.outputDir.childFile('isolate_snapshot_data').createSync(); environment.outputDir.childFile('vm_snapshot_data').createSync(); diff --git a/packages/flutter_tools/test/general.shard/cache_test.dart b/packages/flutter_tools/test/general.shard/cache_test.dart index 45404d90b1..007f6b3e5a 100644 --- a/packages/flutter_tools/test/general.shard/cache_test.dart +++ b/packages/flutter_tools/test/general.shard/cache_test.dart @@ -332,7 +332,7 @@ void main() { when(processManager.run(any, environment: captureAnyNamed('environment'))) .thenAnswer((Invocation invocation) { - final List args = invocation.positionalArguments[0]; + final List args = invocation.positionalArguments[0] as List; expect(args.length, 6); expect(args[1], '-b'); expect(args[2].endsWith('resolve_dependencies.gradle'), isTrue); diff --git a/packages/flutter_tools/test/general.shard/commands/build_apk_test.dart b/packages/flutter_tools/test/general.shard/commands/build_apk_test.dart index ca40523dce..d3706bbeff 100644 --- a/packages/flutter_tools/test/general.shard/commands/build_apk_test.dart +++ b/packages/flutter_tools/test/general.shard/commands/build_apk_test.dart @@ -10,7 +10,6 @@ import 'package:flutter_tools/src/android/android_builder.dart'; import 'package:flutter_tools/src/android/android_sdk.dart'; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build_apk.dart'; @@ -362,9 +361,8 @@ flutter: ); }, throwsToolExit()); - final BufferLogger logger = context.get(); - expect(logger.statusText, contains('Your app isn\'t using AndroidX')); - expect(logger.statusText, contains( + expect(testLogger.statusText, contains('Your app isn\'t using AndroidX')); + expect(testLogger.statusText, contains( 'To avoid potential build failures, you can quickly migrate your app by ' 'following the steps on https://goo.gl/CP92wY' ) @@ -414,10 +412,9 @@ flutter: ); }, throwsToolExit()); - final BufferLogger logger = context.get(); - expect(logger.statusText.contains('[!] Your app isn\'t using AndroidX'), isFalse); + expect(testLogger.statusText.contains('[!] Your app isn\'t using AndroidX'), isFalse); expect( - logger.statusText.contains( + testLogger.statusText.contains( 'To avoid potential build failures, you can quickly migrate your app by ' 'following the steps on https://goo.gl/CP92wY' ), diff --git a/packages/flutter_tools/test/general.shard/commands/build_appbundle_test.dart b/packages/flutter_tools/test/general.shard/commands/build_appbundle_test.dart index 6b2b3e0c95..5b38ad2d6c 100644 --- a/packages/flutter_tools/test/general.shard/commands/build_appbundle_test.dart +++ b/packages/flutter_tools/test/general.shard/commands/build_appbundle_test.dart @@ -10,7 +10,6 @@ import 'package:flutter_tools/src/android/android_builder.dart'; import 'package:flutter_tools/src/android/android_sdk.dart'; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build_appbundle.dart'; @@ -348,9 +347,8 @@ flutter: ); }, throwsToolExit()); - final BufferLogger logger = context.get(); - expect(logger.statusText, contains('Your app isn\'t using AndroidX')); - expect(logger.statusText, contains( + expect(testLogger.statusText, contains('Your app isn\'t using AndroidX')); + expect(testLogger.statusText, contains( 'To avoid potential build failures, you can quickly migrate your app by ' 'following the steps on https://goo.gl/CP92wY' ) @@ -400,10 +398,9 @@ flutter: ); }, throwsToolExit()); - final BufferLogger logger = context.get(); - expect(logger.statusText.contains('Your app isn\'t using AndroidX'), isFalse); + expect(testLogger.statusText.contains('Your app isn\'t using AndroidX'), isFalse); expect( - logger.statusText.contains( + testLogger.statusText.contains( 'To avoid potential build failures, you can quickly migrate your app by ' 'following the steps on https://goo.gl/CP92wY' ), diff --git a/packages/flutter_tools/test/general.shard/compile_batch_test.dart b/packages/flutter_tools/test/general.shard/compile_batch_test.dart index 75f71d0d41..ed2f656bee 100644 --- a/packages/flutter_tools/test/general.shard/compile_batch_test.dart +++ b/packages/flutter_tools/test/general.shard/compile_batch_test.dart @@ -5,13 +5,11 @@ import 'dart:async'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/convert.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; @@ -41,14 +39,13 @@ void main() { when(mockProcessManager.canRun(any)).thenReturn(true); when(mockProcessManager.start(any)).thenAnswer( (Invocation invocation) { - latestCommand = invocation.positionalArguments.first; + latestCommand = invocation.positionalArguments.first as List; return Future.value(mockFrontendServer); }); when(mockFrontendServer.exitCode).thenAnswer((_) async => 0); }); testUsingContext('batch compile single dart successful compilation', () async { - final BufferLogger bufferLogger = logger; when(mockFrontendServer.stdout) .thenAnswer((Invocation invocation) => Stream>.fromFuture( Future>.value(utf8.encode( @@ -64,7 +61,7 @@ void main() { ); expect(mockFrontendServerStdIn.getAndClear(), isEmpty); - expect(bufferLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); + expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(output.outputFilename, equals('/path/to/main.dart.dill')); }, overrides: { ProcessManager: () => mockProcessManager, @@ -136,7 +133,6 @@ void main() { }); testUsingContext('batch compile single dart failed compilation', () async { - final BufferLogger bufferLogger = logger; when(mockFrontendServer.stdout) .thenAnswer((Invocation invocation) => Stream>.fromFuture( Future>.value(utf8.encode( @@ -152,7 +148,7 @@ void main() { ); expect(mockFrontendServerStdIn.getAndClear(), isEmpty); - expect(bufferLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); + expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(output, equals(null)); }, overrides: { ProcessManager: () => mockProcessManager, @@ -162,7 +158,6 @@ void main() { testUsingContext('batch compile single dart abnormal compiler termination', () async { when(mockFrontendServer.exitCode).thenAnswer((_) async => 255); - final BufferLogger bufferLogger = logger; when(mockFrontendServer.stdout) .thenAnswer((Invocation invocation) => Stream>.fromFuture( @@ -179,7 +174,7 @@ void main() { dartDefines: const [], ); expect(mockFrontendServerStdIn.getAndClear(), isEmpty); - expect(bufferLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); + expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(output, equals(null)); }, overrides: { ProcessManager: () => mockProcessManager, diff --git a/packages/flutter_tools/test/general.shard/compile_expression_test.dart b/packages/flutter_tools/test/general.shard/compile_expression_test.dart index 7e22a6ce5e..4db2a9faa5 100644 --- a/packages/flutter_tools/test/general.shard/compile_expression_test.dart +++ b/packages/flutter_tools/test/general.shard/compile_expression_test.dart @@ -12,7 +12,6 @@ import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/convert.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; @@ -59,8 +58,6 @@ void main() { }); testUsingContext('compile expression can compile single expression', () async { - final BufferLogger bufferLogger = logger; - final Completer> compileResponseCompleter = Completer>(); final Completer> compileExpressionResponseCompleter = @@ -85,7 +82,7 @@ void main() { expect(mockFrontendServerStdIn.getAndClear(), 'compile /path/to/main.dart\n'); verifyNoMoreInteractions(mockFrontendServerStdIn); - expect(bufferLogger.errorText, + expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(output.outputFilename, equals('/path/to/main.dart.dill')); @@ -111,7 +108,6 @@ void main() { }); testUsingContext('compile expressions without awaiting', () async { - final BufferLogger bufferLogger = logger; final Completer> compileResponseCompleter = Completer>(); final Completer> compileExpressionResponseCompleter1 = Completer>(); final Completer> compileExpressionResponseCompleter2 = Completer>(); @@ -132,7 +128,7 @@ void main() { null, /* invalidatedFiles */ outputPath: '/build/', ).then((CompilerOutput outputCompile) { - expect(bufferLogger.errorText, + expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(outputCompile.outputFilename, equals('/path/to/main.dart.dill')); diff --git a/packages/flutter_tools/test/general.shard/compile_incremental_test.dart b/packages/flutter_tools/test/general.shard/compile_incremental_test.dart index 0b11900289..f4f8b9856e 100644 --- a/packages/flutter_tools/test/general.shard/compile_incremental_test.dart +++ b/packages/flutter_tools/test/general.shard/compile_incremental_test.dart @@ -7,13 +7,11 @@ import 'dart:async'; import 'package:flutter_tools/src/base/async_guard.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/convert.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; @@ -53,8 +51,6 @@ void main() { }); testUsingContext('incremental compile single dart compile', () async { - final BufferLogger bufferLogger = logger; - when(mockFrontendServer.stdout) .thenAnswer((Invocation invocation) => Stream>.fromFuture( Future>.value(utf8.encode( @@ -69,7 +65,7 @@ void main() { ); expect(mockFrontendServerStdIn.getAndClear(), 'compile /path/to/main.dart\n'); verifyNoMoreInteractions(mockFrontendServerStdIn); - expect(bufferLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); + expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(output.outputFilename, equals('/path/to/main.dart.dill')); }, overrides: { ProcessManager: () => mockProcessManager, @@ -112,7 +108,6 @@ void main() { }); testUsingContext('incremental compile and recompile', () async { - final BufferLogger bufferLogger = logger; final StreamController> streamController = StreamController>(); when(mockFrontendServer.stdout) .thenAnswer((Invocation invocation) => streamController.stream); @@ -141,7 +136,7 @@ void main() { '^reject\\n\$'); verifyNoMoreInteractions(mockFrontendServerStdIn); expect(mockFrontendServerStdIn.getAndClear(), isEmpty); - expect(bufferLogger.errorText, equals( + expect(testLogger.errorText, equals( '\nCompiler message:\nline0\nline1\n' '\nCompiler message:\nline1\nline2\n' '\nCompiler message:\nline1\nline2\n' @@ -153,8 +148,6 @@ void main() { }); testUsingContext('incremental compile and recompile twice', () async { - final BufferLogger bufferLogger = logger; - final StreamController> streamController = StreamController>(); when(mockFrontendServer.stdout) .thenAnswer((Invocation invocation) => streamController.stream); @@ -171,7 +164,7 @@ void main() { verifyNoMoreInteractions(mockFrontendServerStdIn); expect(mockFrontendServerStdIn.getAndClear(), isEmpty); - expect(bufferLogger.errorText, equals( + expect(testLogger.errorText, equals( '\nCompiler message:\nline0\nline1\n' '\nCompiler message:\nline1\nline2\n' '\nCompiler message:\nline2\nline3\n' diff --git a/packages/flutter_tools/test/general.shard/crash_reporting_test.dart b/packages/flutter_tools/test/general.shard/crash_reporting_test.dart index 70301da6df..20f9925f26 100644 --- a/packages/flutter_tools/test/general.shard/crash_reporting_test.dart +++ b/packages/flutter_tools/test/general.shard/crash_reporting_test.dart @@ -11,7 +11,6 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/runner.dart' as tools; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/doctor.dart'; @@ -181,8 +180,7 @@ void main() { expect(method, null); expect(uri, null); - final BufferLogger logger = context.get(); - expect(logger.statusText, ''); + expect(testLogger.statusText, ''); }, overrides: { Stdio: () => const _NoStderr(), }); @@ -260,8 +258,7 @@ Future verifyCrashReportSent(RequestInfo crashInfo, { expect(crashInfo.fields['error_message'], 'Bad state: Test bad state error'); expect(crashInfo.fields['comments'], 'crash'); - final BufferLogger logger = context.get(); - expect(logger.statusText, 'Sending crash report to Google.\n' + expect(testLogger.statusText, 'Sending crash report to Google.\n' 'Crash report sent (report ID: test-report-id)\n'); // Verify that we've written the crash report to disk. @@ -295,11 +292,11 @@ class MockCrashReportSender extends MockClient { }) .where((List pair) => pair != null), key: (dynamic key) { - final List pair = key; + final List pair = key as List; return pair[0]; }, value: (dynamic value) { - final List pair = value; + final List pair = value as List; return pair[1]; }, ); diff --git a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart index c2e27592db..bd9fed14ee 100644 --- a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart +++ b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart @@ -34,7 +34,7 @@ void main() { testUsingContext('pub get 69', () async { String error; - final MockProcessManager processMock = context.get(); + final MockProcessManager processMock = context.get() as MockProcessManager; FakeAsync().run((FakeAsync time) { expect(processMock.lastPubEnvironment, isNull); @@ -158,7 +158,7 @@ void main() { testUsingContext('pub cache in environment is used', () async { String error; - final MockProcessManager processMock = context.get(); + final MockProcessManager processMock = context.get() as MockProcessManager; FakeAsync().run((FakeAsync time) { MockDirectory.findCache = true; @@ -410,7 +410,7 @@ class MockFileSystem extends ForwardingFileSystem { @override Directory directory(dynamic path) { - return MockDirectory(path); + return MockDirectory(path as String); } } diff --git a/packages/flutter_tools/test/general.shard/desktop_device_test.dart b/packages/flutter_tools/test/general.shard/desktop_device_test.dart index f036588b20..fedcc3adea 100644 --- a/packages/flutter_tools/test/general.shard/desktop_device_test.dart +++ b/packages/flutter_tools/test/general.shard/desktop_device_test.dart @@ -5,19 +5,17 @@ import 'dart:async'; import 'dart:convert'; -import 'package:flutter_tools/src/base/context.dart'; -import 'package:flutter_tools/src/base/logger.dart'; -import 'package:flutter_tools/src/project.dart'; -import 'package:mockito/mockito.dart'; -import 'package:process/process.dart'; - import 'package:flutter_tools/src/application_package.dart'; +import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/os.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/desktop_device.dart'; import 'package:flutter_tools/src/device.dart'; +import 'package:flutter_tools/src/project.dart'; +import 'package:mockito/mockito.dart'; +import 'package:process/process.dart'; import '../src/common.dart'; import '../src/context.dart'; @@ -171,8 +169,7 @@ void main() { final MockAppplicationPackage package = MockAppplicationPackage(); final LaunchResult result = await device.startApp(package, prebuiltApplication: true); expect(result.started, false); - final BufferLogger logger = context.get(); - expect(logger.errorText, contains('Unable to find executable to run')); + expect(testLogger.errorText, contains('Unable to find executable to run')); }); testUsingContext('stopApp kills process started by startApp', () async { diff --git a/packages/flutter_tools/test/general.shard/emulator_test.dart b/packages/flutter_tools/test/general.shard/emulator_test.dart index 7e6d389d57..49a963e9ff 100644 --- a/packages/flutter_tools/test/general.shard/emulator_test.dart +++ b/packages/flutter_tools/test/general.shard/emulator_test.dart @@ -129,7 +129,7 @@ void main() { when(mockXcode.xcodeSelectPath).thenReturn('/fake/Xcode.app/Contents/Developer'); when(mockXcode.getSimulatorPath()).thenAnswer((_) => '/fake/simulator.app'); when(mockProcessManager.run(any)).thenAnswer((Invocation invocation) async { - final List args = invocation.positionalArguments[0]; + final List args = invocation.positionalArguments[0] as List; if (args.length >= 3 && args[0] == 'open' && args[1] == '-a' && args[2] == '/fake/simulator.app') { didAttemptToRunSimulator = true; } @@ -206,9 +206,9 @@ class MockProcessManager extends Mock implements ProcessManager { Encoding stdoutEncoding = systemEncoding, Encoding stderrEncoding = systemEncoding, }) { - final String program = command[0]; - final List args = command.sublist(1); - switch (command[0]) { + final String program = command[0] as String; + final List args = command.sublist(1) as List; + switch (program) { case '/usr/bin/xcode-select': throw ProcessException(program, args); break; diff --git a/packages/flutter_tools/test/general.shard/features_test.dart b/packages/flutter_tools/test/general.shard/features_test.dart index 15757eb6a6..ba14ebcbce 100644 --- a/packages/flutter_tools/test/general.shard/features_test.dart +++ b/packages/flutter_tools/test/general.shard/features_test.dart @@ -22,7 +22,7 @@ void main() { mockFlutterVerion = MockFlutterVerion(); mockFlutterConfig = MockFlutterConfig(); mockPlatform = MockPlatform(); - when(mockFlutterConfig.getValue(any)).thenReturn(false); + when(mockFlutterConfig.getValue(any) as bool).thenReturn(false); when(mockPlatform.environment).thenReturn(const {}); testbed = Testbed(overrides: { FlutterVersion: () => mockFlutterVerion, @@ -117,7 +117,7 @@ void main() { test('flutter web enabled with config on master', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('master'); - when(mockFlutterConfig.getValue('enable-web')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-web') as bool).thenReturn(true); expect(featureFlags.isWebEnabled, true); })); @@ -137,7 +137,7 @@ void main() { test('flutter web enabled with config on dev', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('dev'); - when(mockFlutterConfig.getValue('enable-web')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-web') as bool).thenReturn(true); expect(featureFlags.isWebEnabled, true); })); @@ -157,7 +157,7 @@ void main() { test('flutter web not enabled with config on beta', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('beta'); - when(mockFlutterConfig.getValue('enable-web')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-web') as bool).thenReturn(true); expect(featureFlags.isWebEnabled, false); })); @@ -177,7 +177,7 @@ void main() { test('flutter web not enabled with config on stable', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('stable'); - when(mockFlutterConfig.getValue('enable-web')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-web') as bool).thenReturn(true); expect(featureFlags.isWebEnabled, false); })); @@ -199,7 +199,7 @@ void main() { test('flutter macos desktop enabled with config on master', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('master'); - when(mockFlutterConfig.getValue('enable-macos-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-macos-desktop') as bool).thenReturn(true); expect(featureFlags.isMacOSEnabled, true); })); @@ -219,7 +219,7 @@ void main() { test('flutter macos desktop not enabled with config on dev', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('dev'); - when(mockFlutterConfig.getValue('flutter-desktop-macos')).thenReturn(true); + when(mockFlutterConfig.getValue('flutter-desktop-macos') as bool).thenReturn(true); expect(featureFlags.isMacOSEnabled, false); })); @@ -239,7 +239,7 @@ void main() { test('fflutter macos desktop not enabled with config on beta', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('beta'); - when(mockFlutterConfig.getValue('flutter-desktop-macos')).thenReturn(true); + when(mockFlutterConfig.getValue('flutter-desktop-macos') as bool).thenReturn(true); expect(featureFlags.isMacOSEnabled, false); })); @@ -259,7 +259,7 @@ void main() { test('flutter macos desktop not enabled with config on stable', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('stable'); - when(mockFlutterConfig.getValue('flutter-desktop-macos')).thenReturn(true); + when(mockFlutterConfig.getValue('flutter-desktop-macos') as bool).thenReturn(true); expect(featureFlags.isMacOSEnabled, false); })); @@ -280,7 +280,7 @@ void main() { test('flutter linux desktop enabled with config on master', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('master'); - when(mockFlutterConfig.getValue('enable-linux-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-linux-desktop') as bool).thenReturn(true); expect(featureFlags.isLinuxEnabled, true); })); @@ -300,7 +300,7 @@ void main() { test('flutter linux desktop not enabled with config on dev', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('dev'); - when(mockFlutterConfig.getValue('enable-linux-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-linux-desktop') as bool).thenReturn(true); expect(featureFlags.isLinuxEnabled, false); })); @@ -320,7 +320,7 @@ void main() { test('fflutter linux desktop not enabled with config on beta', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('beta'); - when(mockFlutterConfig.getValue('enable-linux-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-linux-desktop') as bool).thenReturn(true); expect(featureFlags.isLinuxEnabled, false); })); @@ -340,7 +340,7 @@ void main() { test('flutter linux desktop not enabled with config on stable', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('stable'); - when(mockFlutterConfig.getValue('enable-linux-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-linux-desktop') as bool).thenReturn(true); expect(featureFlags.isLinuxEnabled, false); })); @@ -361,7 +361,7 @@ void main() { test('flutter windows desktop enabled with config on master', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('master'); - when(mockFlutterConfig.getValue('enable-windows-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-windows-desktop') as bool).thenReturn(true); expect(featureFlags.isWindowsEnabled, true); })); @@ -381,7 +381,7 @@ void main() { test('flutter windows desktop not enabled with config on dev', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('dev'); - when(mockFlutterConfig.getValue('enable-windows-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-windows-desktop') as bool).thenReturn(true); expect(featureFlags.isWindowsEnabled, false); })); @@ -401,7 +401,7 @@ void main() { test('fflutter windows desktop not enabled with config on beta', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('beta'); - when(mockFlutterConfig.getValue('enable-windows-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-windows-desktop') as bool).thenReturn(true); expect(featureFlags.isWindowsEnabled, false); })); @@ -421,7 +421,7 @@ void main() { test('flutter windows desktop not enabled with config on stable', () => testbed.run(() { when(mockFlutterVerion.channel).thenReturn('stable'); - when(mockFlutterConfig.getValue('enable-windows-desktop')).thenReturn(true); + when(mockFlutterConfig.getValue('enable-windows-desktop') as bool).thenReturn(true); expect(featureFlags.isWindowsEnabled, false); })); diff --git a/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart b/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart index 353ffad29c..b777c8c493 100644 --- a/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart +++ b/packages/flutter_tools/test/general.shard/flutter_manifest_test.dart @@ -8,7 +8,6 @@ import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/flutter_manifest.dart'; @@ -401,7 +400,6 @@ flutter: }); testUsingContext('handles an invalid plugin declaration', () async { - final BufferLogger bufferLogger = context.get(); const String manifest = ''' name: test flutter: @@ -409,7 +407,7 @@ flutter: '''; final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); expect(flutterManifest, null); - expect(bufferLogger.errorText, contains('Expected "plugin" to be an object, but got null')); + expect(testLogger.errorText, contains('Expected "plugin" to be an object, but got null')); }); @@ -528,7 +526,6 @@ flutter: // Regression test for https://github.com/flutter/flutter/issues/31764 testUsingContext('Returns proper error when font detail is malformed', () async { - final BufferLogger logger = context.get(); const String manifest = ''' name: test dependencies: @@ -543,11 +540,10 @@ flutter: final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); expect(flutterManifest, null); - expect(logger.errorText, contains('Expected "fonts" to either be null or a list.')); + expect(testLogger.errorText, contains('Expected "fonts" to either be null or a list.')); }); testUsingContext('Returns proper error when font detail is not a list of maps', () async { - final BufferLogger logger = context.get(); const String manifest = ''' name: test dependencies: @@ -562,11 +558,10 @@ flutter: final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); expect(flutterManifest, null); - expect(logger.errorText, contains('Expected "fonts" to be a list of maps.')); + expect(testLogger.errorText, contains('Expected "fonts" to be a list of maps.')); }); testUsingContext('Returns proper error when font is a map instead of a list', () async { - final BufferLogger logger = context.get(); const String manifest = ''' name: test dependencies: @@ -581,11 +576,10 @@ flutter: final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); expect(flutterManifest, null); - expect(logger.errorText, contains('Expected "fonts" to be a list')); + expect(testLogger.errorText, contains('Expected "fonts" to be a list')); }); testUsingContext('Returns proper error when second font family is invalid', () async { - final BufferLogger logger = context.get(); const String manifest = ''' name: test dependencies: @@ -601,11 +595,10 @@ flutter: '''; final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); expect(flutterManifest, null); - expect(logger.errorText, contains('Expected a map.')); + expect(testLogger.errorText, contains('Expected a map.')); }); testUsingContext('Does not crash on empty entry', () async { - final BufferLogger logger = context.get(); const String manifest = ''' name: test dependencies: @@ -620,7 +613,7 @@ flutter: final FlutterManifest flutterManifest = FlutterManifest.createFromString(manifest); final List assets = flutterManifest.assets; - expect(logger.errorText, contains('Asset manifest contains a null or empty uri.')); + expect(testLogger.errorText, contains('Asset manifest contains a null or empty uri.')); expect(assets.length, 1); }); }); diff --git a/packages/flutter_tools/test/general.shard/flutter_platform_test.dart b/packages/flutter_tools/test/general.shard/flutter_platform_test.dart index 1d9f59493d..5b4888aefc 100644 --- a/packages/flutter_tools/test/general.shard/flutter_platform_test.dart +++ b/packages/flutter_tools/test/general.shard/flutter_platform_test.dart @@ -51,7 +51,7 @@ void main() { final VerificationResult toVerify = verify(mockProcessManager.start(any, environment: captureAnyNamed('environment'))); expect(toVerify.captured, hasLength(1)); expect(toVerify.captured.first, isInstanceOf>()); - return toVerify.captured.first; + return toVerify.captured.first as Map; } testUsingContext('as true when not originally set', () async { diff --git a/packages/flutter_tools/test/general.shard/forbidden_imports_test.dart b/packages/flutter_tools/test/general.shard/forbidden_imports_test.dart index a7d0c30141..a5052e115d 100644 --- a/packages/flutter_tools/test/general.shard/forbidden_imports_test.dart +++ b/packages/flutter_tools/test/general.shard/forbidden_imports_test.dart @@ -135,4 +135,4 @@ void main() { bool _isDartFile(FileSystemEntity entity) => entity is File && entity.path.endsWith('.dart'); -File _asFile(FileSystemEntity entity) => entity; +File _asFile(FileSystemEntity entity) => entity as File; diff --git a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart index 22ce941a28..c72ea6dd30 100644 --- a/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart +++ b/packages/flutter_tools/test/general.shard/fuchsia/fuchsia_device_test.dart @@ -147,8 +147,8 @@ void main() { )).thenAnswer((Invocation invocation) => Future.value(mockProcessResult)); when(mockProcessResult.exitCode).thenReturn(1); - when(mockProcessResult.stdout).thenReturn(''); - when(mockProcessResult.stderr).thenReturn(''); + when(mockProcessResult.stdout as String).thenReturn(''); + when(mockProcessResult.stderr as String).thenReturn(''); when(mockFile.absolute).thenReturn(mockFile); when(mockFile.path).thenReturn(''); @@ -161,8 +161,8 @@ void main() { )).thenAnswer((Invocation invocation) => Future.value(emptyStdoutProcessResult)); when(emptyStdoutProcessResult.exitCode).thenReturn(0); - when(emptyStdoutProcessResult.stdout).thenReturn(''); - when(emptyStdoutProcessResult.stderr).thenReturn(''); + when(emptyStdoutProcessResult.stdout as String).thenReturn(''); + when(emptyStdoutProcessResult.stderr as String).thenReturn(''); }); testUsingContext('No vmservices found', () async { @@ -327,7 +327,7 @@ void main() { when(vmService.vm).thenReturn(vm); }); - Future findUri(List views, String expectedIsolateName) { + Future findUri(List views, String expectedIsolateName) async { when(vm.views).thenReturn(views); for (MockFlutterView view in views) { when(view.owner).thenReturn(vm); @@ -350,7 +350,7 @@ void main() { when(vmService.refreshViews()) .thenAnswer((Invocation invocation) => Future.value(null)); when(vmService.httpAddress).thenReturn(Uri.parse('example')); - return discoveryProtocol.uri; + return await discoveryProtocol.uri; } testUsingContext('can find flutter view with matching isolate name', () async { @@ -659,24 +659,24 @@ void main() { when(mockSuccessProcessManager.run(any)).thenAnswer( (Invocation invocation) => Future.value(mockSuccessProcessResult)); when(mockSuccessProcessResult.exitCode).thenReturn(0); - when(mockSuccessProcessResult.stdout).thenReturn('version'); - when(mockSuccessProcessResult.stderr).thenReturn(''); + when(mockSuccessProcessResult.stdout as String).thenReturn('version'); + when(mockSuccessProcessResult.stderr as String).thenReturn(''); mockFailureProcessManager = MockProcessManager(); mockFailureProcessResult = MockProcessResult(); when(mockFailureProcessManager.run(any)).thenAnswer( (Invocation invocation) => Future.value(mockFailureProcessResult)); when(mockFailureProcessResult.exitCode).thenReturn(1); - when(mockFailureProcessResult.stdout).thenReturn(''); - when(mockFailureProcessResult.stderr).thenReturn(''); + when(mockFailureProcessResult.stdout as String).thenReturn(''); + when(mockFailureProcessResult.stderr as String).thenReturn(''); emptyStdoutProcessManager = MockProcessManager(); emptyStdoutProcessResult = MockProcessResult(); when(emptyStdoutProcessManager.run(any)).thenAnswer((Invocation invocation) => Future.value(emptyStdoutProcessResult)); when(emptyStdoutProcessResult.exitCode).thenReturn(0); - when(emptyStdoutProcessResult.stdout).thenReturn(''); - when(emptyStdoutProcessResult.stderr).thenReturn(''); + when(emptyStdoutProcessResult.stdout as String).thenReturn(''); + when(emptyStdoutProcessResult.stderr as String).thenReturn(''); }); testUsingContext('returns what we get from the device on success', () async { diff --git a/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart b/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart index 348543851c..a3c55378b7 100644 --- a/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/code_signing_test.dart @@ -455,7 +455,7 @@ void main() { )); when(mockOpenSslProcess.stderr).thenAnswer((Invocation invocation) => mockOpenSslStdErr); when(mockOpenSslProcess.exitCode).thenAnswer((_) => Future.value(0)); - when(mockConfig.getValue('ios-signing-cert')).thenReturn('iPhone Developer: Profile 3 (3333CCCC33)'); + when(mockConfig.getValue('ios-signing-cert') as String).thenReturn('iPhone Developer: Profile 3 (3333CCCC33)'); final Map signingConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app); @@ -535,7 +535,7 @@ void main() { )); when(mockOpenSslProcess.stderr).thenAnswer((Invocation invocation) => mockOpenSslStdErr); when(mockOpenSslProcess.exitCode).thenAnswer((_) => Future.value(0)); - when(mockConfig.getValue('ios-signing-cert')).thenReturn('iPhone Developer: Invalid Profile'); + when(mockConfig.getValue('ios-signing-cert') as String).thenReturn('iPhone Developer: Invalid Profile'); final Map signingConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app); diff --git a/packages/flutter_tools/test/general.shard/ios/devices_test.dart b/packages/flutter_tools/test/general.shard/ios/devices_test.dart index dabdc549c8..522bb7472f 100644 --- a/packages/flutter_tools/test/general.shard/ios/devices_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/devices_test.dart @@ -111,7 +111,7 @@ void main() { IOSDeviceLogReader createLogReader( IOSDevice device, - ApplicationPackage appPackage, + IOSApp appPackage, Process process) { final IOSDeviceLogReader logReader = IOSDeviceLogReader(device, appPackage); logReader.idevicesyslogProcess = process; @@ -436,7 +436,7 @@ void main() { bundlePath: anyNamed('bundlePath'), launchArguments: anyNamed('launchArguments'), )).thenAnswer((Invocation inv) { - args = inv.namedArguments[const Symbol('launchArguments')]; + args = inv.namedArguments[const Symbol('launchArguments')] as List; return Future.value(0); }); diff --git a/packages/flutter_tools/test/general.shard/ios/simulators_test.dart b/packages/flutter_tools/test/general.shard/ios/simulators_test.dart index 60369b8605..29d8670052 100644 --- a/packages/flutter_tools/test/general.shard/ios/simulators_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/simulators_test.dart @@ -193,7 +193,7 @@ void main() { await simulator.sideloadUpdatedAssetsForInstalledApplicationBundle(BuildInfo.debug, 'lib/main.dart'); final VerificationResult result = verify(buildSystem.build(any, captureAny)); - final Environment environment = result.captured.single; + final Environment environment = result.captured.single as Environment; expect(environment.defines, { kTargetFile: 'lib/main.dart', kTargetPlatform: 'ios', diff --git a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart index bbaf06711a..e5256e544c 100644 --- a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart @@ -722,7 +722,7 @@ flutter: }); } -Platform fakePlatform(String name) { +FakePlatform fakePlatform(String name) { return FakePlatform.fromPlatform(const LocalPlatform())..operatingSystem = name; } diff --git a/packages/flutter_tools/test/general.shard/package_uri_mapper_test.dart b/packages/flutter_tools/test/general.shard/package_uri_mapper_test.dart index 675d188cb3..3f47e69cb6 100644 --- a/packages/flutter_tools/test/general.shard/package_uri_mapper_test.dart +++ b/packages/flutter_tools/test/general.shard/package_uri_mapper_test.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:typed_data'; + import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/convert.dart'; @@ -31,7 +33,7 @@ void main() { mockFile = MockFile(); when(mockFileSystem.path).thenReturn(fs.path); when(mockFileSystem.file(any)).thenReturn(mockFile); - when(mockFile.readAsBytesSync()).thenReturn(utf8.encode(packagesContents)); + when(mockFile.readAsBytesSync()).thenReturn(utf8.encode(packagesContents) as Uint8List); }); testUsingContext('Can map main.dart to correct package', () async { @@ -66,7 +68,7 @@ void main() { when(mockFileSystem.path).thenReturn(fs.path); when(mockFileSystem.file(any)).thenReturn(mockFile); when(mockFile.readAsBytesSync()) - .thenReturn(utf8.encode(multiRootPackagesContents)); + .thenReturn(utf8.encode(multiRootPackagesContents) as Uint8List); final PackageUriMapper packageUriMapper = PackageUriMapper( '/example/lib/main.dart', '.packages', diff --git a/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart b/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart index 8f96ebb649..8212d998ef 100644 --- a/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart +++ b/packages/flutter_tools/test/general.shard/plugin_parsing_test.dart @@ -18,13 +18,13 @@ void main() { 'iosPrefix: FLT\n' 'pluginClass: SamplePlugin\n'; - final dynamic pluginYaml = loadYaml(pluginYamlRaw); + final YamlMap pluginYaml = loadYaml(pluginYamlRaw) as YamlMap; final Plugin plugin = Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml, const []); final AndroidPlugin androidPlugin = - plugin.platforms[AndroidPlugin.kConfigKey]; - final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey]; + plugin.platforms[AndroidPlugin.kConfigKey] as AndroidPlugin; + final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey] as IOSPlugin; final String androidPluginClass = androidPlugin.pluginClass; final String iosPluginClass = iosPlugin.pluginClass; @@ -51,20 +51,20 @@ void main() { ' windows:\n' ' pluginClass: WinSamplePlugin\n'; - final dynamic pluginYaml = loadYaml(pluginYamlRaw); + final YamlMap pluginYaml = loadYaml(pluginYamlRaw) as YamlMap; final Plugin plugin = Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml, const []); final AndroidPlugin androidPlugin = - plugin.platforms[AndroidPlugin.kConfigKey]; - final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey]; + plugin.platforms[AndroidPlugin.kConfigKey] as AndroidPlugin; + final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey] as IOSPlugin; final LinuxPlugin linuxPlugin = - plugin.platforms[LinuxPlugin.kConfigKey]; + plugin.platforms[LinuxPlugin.kConfigKey] as LinuxPlugin; final MacOSPlugin macOSPlugin = - plugin.platforms[MacOSPlugin.kConfigKey]; - final WebPlugin webPlugin = plugin.platforms[WebPlugin.kConfigKey]; + plugin.platforms[MacOSPlugin.kConfigKey] as MacOSPlugin; + final WebPlugin webPlugin = plugin.platforms[WebPlugin.kConfigKey] as WebPlugin; final WindowsPlugin windowsPlugin = - plugin.platforms[WindowsPlugin.kConfigKey]; + plugin.platforms[WindowsPlugin.kConfigKey] as WindowsPlugin; final String androidPluginClass = androidPlugin.pluginClass; final String iosPluginClass = iosPlugin.pluginClass; @@ -100,18 +100,14 @@ void main() { final dynamic pluginYaml = loadYaml(pluginYamlRaw); final Plugin plugin = - Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml, const []); + Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml as YamlMap, const []); - final AndroidPlugin androidPlugin = - plugin.platforms[AndroidPlugin.kConfigKey]; - final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey]; - final LinuxPlugin linuxPlugin = - plugin.platforms[LinuxPlugin.kConfigKey]; - final MacOSPlugin macOSPlugin = - plugin.platforms[MacOSPlugin.kConfigKey]; - final WebPlugin webPlugin = plugin.platforms[WebPlugin.kConfigKey]; - final WindowsPlugin windowsPlugin = - plugin.platforms[WindowsPlugin.kConfigKey]; + final AndroidPlugin androidPlugin = plugin.platforms[AndroidPlugin.kConfigKey] as AndroidPlugin; + final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey] as IOSPlugin; + final LinuxPlugin linuxPlugin = plugin.platforms[LinuxPlugin.kConfigKey] as LinuxPlugin; + final MacOSPlugin macOSPlugin = plugin.platforms[MacOSPlugin.kConfigKey] as MacOSPlugin; + final WebPlugin webPlugin = plugin.platforms[WebPlugin.kConfigKey] as WebPlugin; + final WindowsPlugin windowsPlugin = plugin.platforms[WindowsPlugin.kConfigKey] as WindowsPlugin; final String androidPluginClass = androidPlugin.pluginClass; final String iosPluginClass = iosPlugin.pluginClass; @@ -144,7 +140,7 @@ void main() { final dynamic pluginYaml = loadYaml(pluginYamlRaw); final Plugin plugin = - Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml, const []); + Plugin.fromYaml(_kTestPluginName, _kTestPluginPath, pluginYaml as YamlMap, const []); expect(plugin.platforms, {}); }); 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 b5204ddd78..85a14da77d 100644 --- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart @@ -10,7 +10,6 @@ import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart' as io; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/devfs.dart'; @@ -330,35 +329,33 @@ void main() { when(mockDevice.supportsScreenshot).thenReturn(true); residentRunner.printHelp(details: true); - final BufferLogger bufferLogger = context.get(); // supports service protocol expect(residentRunner.supportsServiceProtocol, true); - expect(bufferLogger.statusText, contains('"w"')); - expect(bufferLogger.statusText, contains('"t"')); - expect(bufferLogger.statusText, contains('"P"')); - expect(bufferLogger.statusText, contains('"a"')); + expect(testLogger.statusText, contains('"w"')); + expect(testLogger.statusText, contains('"t"')); + expect(testLogger.statusText, contains('"P"')); + expect(testLogger.statusText, contains('"a"')); // isRunningDebug expect(residentRunner.isRunningDebug, true); - expect(bufferLogger.statusText, contains('"L"')); - expect(bufferLogger.statusText, contains('"S"')); - expect(bufferLogger.statusText, contains('"U"')); - expect(bufferLogger.statusText, contains('"i"')); - expect(bufferLogger.statusText, contains('"p"')); - expect(bufferLogger.statusText, contains('"o"')); - expect(bufferLogger.statusText, contains('"z"')); + expect(testLogger.statusText, contains('"L"')); + expect(testLogger.statusText, contains('"S"')); + expect(testLogger.statusText, contains('"U"')); + expect(testLogger.statusText, contains('"i"')); + expect(testLogger.statusText, contains('"p"')); + expect(testLogger.statusText, contains('"o"')); + expect(testLogger.statusText, contains('"z"')); // screenshot - expect(bufferLogger.statusText, contains('"s"')); + expect(testLogger.statusText, contains('"s"')); })); test('ResidentRunner can take screenshot on debug device', () => testbed.run(() async { when(mockDevice.supportsScreenshot).thenReturn(true); when(mockDevice.takeScreenshot(any)) .thenAnswer((Invocation invocation) async { - final File file = invocation.positionalArguments.first; + final File file = invocation.positionalArguments.first as File; file.writeAsBytesSync(List.generate(1024, (int i) => i)); }); - final BufferLogger bufferLogger = context.get(); await residentRunner.screenshot(mockFlutterDevice); @@ -366,37 +363,34 @@ void main() { verify(mockIsolate.flutterDebugAllowBanner(false)).called(1); // Enables debug banner. verify(mockIsolate.flutterDebugAllowBanner(true)).called(1); - expect(bufferLogger.statusText, contains('1kB')); + expect(testLogger.statusText, contains('1kB')); })); test('ResidentRunner bails taking screenshot on debug device if debugAllowBanner throws pre', () => testbed.run(() async { when(mockDevice.supportsScreenshot).thenReturn(true); when(mockIsolate.flutterDebugAllowBanner(false)).thenThrow(Exception()); - final BufferLogger bufferLogger = context.get(); await residentRunner.screenshot(mockFlutterDevice); - expect(bufferLogger.errorText, contains('Error')); + expect(testLogger.errorText, contains('Error')); })); test('ResidentRunner bails taking screenshot on debug device if debugAllowBanner throws post', () => testbed.run(() async { when(mockDevice.supportsScreenshot).thenReturn(true); when(mockIsolate.flutterDebugAllowBanner(true)).thenThrow(Exception()); - final BufferLogger bufferLogger = context.get(); await residentRunner.screenshot(mockFlutterDevice); - expect(bufferLogger.errorText, contains('Error')); + expect(testLogger.errorText, contains('Error')); })); test('ResidentRunner bails taking screenshot on debug device if takeScreenshot throws', () => testbed.run(() async { when(mockDevice.supportsScreenshot).thenReturn(true); when(mockDevice.takeScreenshot(any)).thenThrow(Exception()); - final BufferLogger bufferLogger = context.get(); await residentRunner.screenshot(mockFlutterDevice); - expect(bufferLogger.errorText, contains('Error')); + expect(testLogger.errorText, contains('Error')); })); test('ResidentRunner can\'t take screenshot on device without support', () => testbed.run(() { @@ -417,10 +411,9 @@ void main() { when(mockDevice.supportsScreenshot).thenReturn(true); when(mockDevice.takeScreenshot(any)) .thenAnswer((Invocation invocation) async { - final File file = invocation.positionalArguments.first; + final File file = invocation.positionalArguments.first as File; file.writeAsBytesSync(List.generate(1024, (int i) => i)); }); - final BufferLogger bufferLogger = context.get(); await residentRunner.screenshot(mockFlutterDevice); @@ -428,7 +421,7 @@ void main() { verifyNever(mockIsolate.flutterDebugAllowBanner(false)); // doesn't enable debug banner. verifyNever(mockIsolate.flutterDebugAllowBanner(true)); - expect(bufferLogger.statusText, contains('1kB')); + expect(testLogger.statusText, contains('1kB')); })); test('FlutterDevice will not exit a paused isolate', () => testbed.run(() async { @@ -560,7 +553,6 @@ void main() { })); test('HotRunner handles failure to write vmservice file', () => testbed.run(() async { - final BufferLogger bufferLogger = logger; fs.file(fs.path.join('lib', 'main.dart')).createSync(recursive: true); residentRunner = HotRunner( [ @@ -577,7 +569,7 @@ void main() { }); await residentRunner.run(); - expect(bufferLogger.errorText, contains('Failed to write vmservice-out-file at foo')); + expect(testLogger.errorText, contains('Failed to write vmservice-out-file at foo')); }, overrides: { FileSystem: () => ThrowingForwardingFileSystem(MemoryFileSystem()), })); @@ -615,7 +607,7 @@ void main() { flutterProject: FlutterProject.current(), target: null, trackWidgetCreation: true, - )).generator; + )).generator as DefaultResidentCompiler; expect(residentCompiler.targetModel, TargetModel.dartdevc); expect(residentCompiler.sdkRoot, diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart index a793459e47..f8fc0d0c40 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart @@ -42,7 +42,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; }, overrides: { WebFsFactory: () => ({ @@ -70,7 +70,7 @@ void main() { test('Can successfully run and connect without vmservice', () => testbed.run(() async { _setupMocks(); - final DelegateLogger delegateLogger = logger; + final DelegateLogger delegateLogger = logger as DelegateLogger; final MockStatus mockStatus = MockStatus(); delegateLogger.status = mockStatus; final Completer connectionInfoCompleter = Completer(); 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 a6d701bf58..c60d722173 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 @@ -12,6 +12,8 @@ import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_info.dart'; +import 'package:flutter_tools/src/build_runner/resident_web_runner.dart'; +import 'package:flutter_tools/src/build_runner/web_fs.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/devfs.dart'; import 'package:flutter_tools/src/device.dart'; @@ -20,8 +22,6 @@ import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_runner.dart'; -import 'package:flutter_tools/src/build_runner/resident_web_runner.dart'; -import 'package:flutter_tools/src/build_runner/web_fs.dart'; import 'package:flutter_tools/src/web/chrome.dart'; import 'package:flutter_tools/src/web/web_device.dart'; import 'package:meta/meta.dart'; @@ -30,6 +30,7 @@ import 'package:vm_service/vm_service.dart'; import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'; import '../src/common.dart'; +import '../src/context.dart'; import '../src/testbed.dart'; void main() { @@ -75,7 +76,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; }, overrides: { WebFsFactory: () => ({ @@ -139,7 +140,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; expect(profileResidentWebRunner.debuggingEnabled, false); @@ -177,8 +178,6 @@ void main() { test('runner with web server device uses debug extension with --start-paused', () => testbed.run(() async { _setupMocks(); when(mockFlutterDevice.device).thenReturn(WebServerDevice()); - final BufferLogger bufferLogger = logger; - final ResidentWebRunner runner = DwdsWebRunnerFactory().createWebRunner( mockFlutterDevice, flutterProject: FlutterProject.current(), @@ -186,7 +185,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: [], - ); + ) as ResidentWebRunner; final Completer connectionInfoCompleter = Completer(); unawaited(runner.run( @@ -197,7 +196,7 @@ void main() { // Check connect() was told to use the debug extension. verify(mockWebFs.connect(true)).called(1); // And ensure the debug services was started. - expect(bufferLogger.statusText, contains('Debug service listening on')); + expect(testLogger.statusText, contains('Debug service listening on')); })); test('profile does not supportsServiceProtocol', () => testbed.run(() { @@ -217,26 +216,24 @@ void main() { test('Exits on run if application does not support the web', () => testbed.run(() async { fs.file('pubspec.yaml').createSync(); - final BufferLogger bufferLogger = logger; expect(await residentWebRunner.run(), 1); - expect(bufferLogger.errorText, contains('This application is not configured to build on the web')); + expect(testLogger.errorText, contains('This application is not configured to build on the web')); })); test('Exits on run if target file does not exist', () => testbed.run(() async { fs.file('pubspec.yaml').createSync(); fs.file(fs.path.join('web', 'index.html')).createSync(recursive: true); - final BufferLogger bufferLogger = logger; expect(await residentWebRunner.run(), 1); final String absoluteMain = fs.path.absolute(fs.path.join('lib', 'main.dart')); - expect(bufferLogger.errorText, contains('Tried to run $absoluteMain, but that file does not exist.')); + expect(testLogger.errorText, contains('Tried to run $absoluteMain, but that file does not exist.')); })); test('Can successfully run and connect to vmservice', () => testbed.run(() async { _setupMocks(); - final DelegateLogger delegateLogger = logger; - final BufferLogger bufferLogger = delegateLogger.delegate; + final DelegateLogger delegateLogger = logger as DelegateLogger; + final BufferLogger bufferLogger = delegateLogger.delegate as BufferLogger; final MockStatus status = MockStatus(); delegateLogger.status = status; final Completer connectionInfoCompleter = Completer(); @@ -264,14 +261,13 @@ void main() { ipv6: true, stayResident: false, dartDefines: const [], - ); + ) as ResidentWebRunner; expect(await residentWebRunner.run(), 0); })); test('Listens to stdout streams before running main', () => testbed.run(() async { _setupMocks(); - final BufferLogger bufferLogger = logger; final Completer connectionInfoCompleter = Completer(); final StreamController controller = StreamController.broadcast(); when(mockVmService.onStdoutEvent).thenAnswer((Invocation _) { @@ -290,7 +286,7 @@ void main() { )); await connectionInfoCompleter.future; - expect(bufferLogger.statusText, contains('THIS MESSAGE IS IMPORTANT')); + expect(testLogger.statusText, contains('THIS MESSAGE IS IMPORTANT')); })); test('Does not run main with --start-paused', () => testbed.run(() async { @@ -301,7 +297,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; _setupMocks(); final Completer connectionInfoCompleter = Completer(); final StreamController controller = StreamController.broadcast(); @@ -318,7 +314,6 @@ void main() { test('Can hot reload after attaching', () => testbed.run(() async { _setupMocks(); - final BufferLogger bufferLogger = logger; final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( connectionInfoCompleter: connectionInfoCompleter, @@ -332,7 +327,7 @@ void main() { }); final OperationResult result = await residentWebRunner.restart(fullRestart: false); - expect(bufferLogger.statusText, contains('Reloaded application in')); + expect(testLogger.statusText, contains('Reloaded application in')); expect(result.code, 0); // ensure that analytics are sent. verify(Usage.instance.sendEvent('hot', 'restart', parameters: { @@ -368,7 +363,6 @@ void main() { return UpdateFSReport(success: true) ..invalidatedModules = ['example']; }); - final BufferLogger bufferLogger = logger; final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( connectionInfoCompleter: connectionInfoCompleter, @@ -376,7 +370,7 @@ void main() { await connectionInfoCompleter.future; final OperationResult result = await residentWebRunner.restart(fullRestart: false); - expect(bufferLogger.statusText, contains('Reloaded application in')); + expect(testLogger.statusText, contains('Reloaded application in')); expect(result.code, 0); verify(mockResidentCompiler.accept()).called(2); // ensure that analytics are sent. @@ -412,7 +406,6 @@ void main() { return UpdateFSReport(success: true) ..invalidatedModules = ['example']; }); - final BufferLogger bufferLogger = logger; final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( connectionInfoCompleter: connectionInfoCompleter, @@ -420,7 +413,7 @@ void main() { await connectionInfoCompleter.future; final OperationResult result = await residentWebRunner.restart(fullRestart: true); - expect(bufferLogger.statusText, contains('Restarted application in')); + expect(testLogger.statusText, contains('Restarted application in')); expect(result.code, 0); verify(mockResidentCompiler.accept()).called(2); // ensure that analytics are sent. @@ -438,7 +431,6 @@ void main() { test('Can hot restart after attaching', () => testbed.run(() async { _setupMocks(); - final BufferLogger bufferLogger = logger; final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( connectionInfoCompleter: connectionInfoCompleter, @@ -452,7 +444,7 @@ void main() { }); final OperationResult result = await residentWebRunner.restart(fullRestart: true); - expect(bufferLogger.statusText, contains('Restarted application in')); + expect(testLogger.statusText, contains('Restarted application in')); expect(result.code, 0); // ensure that analytics are sent. verify(Usage.instance.sendEvent('hot', 'restart', parameters: { @@ -556,11 +548,10 @@ void main() { test('printHelp without details has web warning', () => testbed.run(() async { residentWebRunner.printHelp(details: false); - final BufferLogger bufferLogger = logger; - expect(bufferLogger.statusText, contains('Warning')); - expect(bufferLogger.statusText, contains('https://flutter.dev/web')); - expect(bufferLogger.statusText, isNot(contains('https://flutter.dev/web.'))); + expect(testLogger.statusText, contains('Warning')); + expect(testLogger.statusText, contains('https://flutter.dev/web')); + expect(testLogger.statusText, isNot(contains('https://flutter.dev/web.'))); })); test('debugDumpApp', () => testbed.run(() async { @@ -697,7 +688,6 @@ void main() { test('debugTogglePlatform', () => testbed.run(() async { _setupMocks(); - final BufferLogger bufferLogger = logger; final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( connectionInfoCompleter: connectionInfoCompleter, @@ -710,7 +700,7 @@ void main() { await residentWebRunner.debugTogglePlatform(); - expect(bufferLogger.statusText, contains('Switched operating system to android')); + expect(testLogger.statusText, contains('Switched operating system to android')); verify(mockVmService.callServiceExtension('ext.flutter.platformOverride', args: {'value': 'android'})).called(1); })); @@ -763,16 +753,14 @@ void main() { )); await connectionInfoCompleter.future; - final BufferLogger bufferLogger = logger; - - expect(bufferLogger.statusText, contains('Launching ${fs.path.join('lib', 'main.dart')} on Chromez in debug mode')); + expect(testLogger.statusText, contains('Launching ${fs.path.join('lib', 'main.dart')} on Chromez in debug mode')); })); test('Sends launched app.webLaunchUrl event for Chrome device', () => testbed.run(() async { _setupMocks(); when(mockFlutterDevice.device).thenReturn(ChromeDevice()); - final DelegateLogger delegateLogger = logger; + final DelegateLogger delegateLogger = logger as DelegateLogger; final MockStatus mockStatus = MockStatus(); delegateLogger.status = mockStatus; final ResidentWebRunner runner = DwdsWebRunnerFactory().createWebRunner( @@ -782,7 +770,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; final Completer connectionInfoCompleter = Completer(); unawaited(runner.run( @@ -807,7 +795,7 @@ void main() { _setupMocks(); when(mockFlutterDevice.device).thenReturn(WebServerDevice()); - final DelegateLogger delegateLogger = logger; + final DelegateLogger delegateLogger = logger as DelegateLogger; final MockStatus mockStatus = MockStatus(); delegateLogger.status = mockStatus; final ResidentWebRunner runner = DwdsWebRunnerFactory().createWebRunner( @@ -817,7 +805,7 @@ void main() { ipv6: true, stayResident: true, dartDefines: const [], - ); + ) as ResidentWebRunner; final Completer connectionInfoCompleter = Completer(); unawaited(runner.run( @@ -992,7 +980,7 @@ void main() { test('Rethrows unknown exception type from web tooling', () => testbed.run(() async { _setupMocks(); - final DelegateLogger delegateLogger = logger; + final DelegateLogger delegateLogger = logger as DelegateLogger; final MockStatus mockStatus = MockStatus(); delegateLogger.status = mockStatus; final Completer connectionInfoCompleter = Completer(); diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart index 92fa47b78c..065ac41dc9 100644 --- a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart @@ -50,13 +50,13 @@ void main() { version: '1 2 3 4 5', ); - runner = createTestCommandRunner(DummyFlutterCommand()); + runner = createTestCommandRunner(DummyFlutterCommand()) as FlutterCommandRunner; processManager = MockProcessManager(); }); group('run', () { testUsingContext('checks that Flutter installation is up-to-date', () async { - final MockFlutterVersion version = FlutterVersion.instance; + final MockFlutterVersion version = FlutterVersion.instance as MockFlutterVersion; bool versionChecked = false; when(version.checkFlutterVersionFreshness()).thenAnswer((_) async { versionChecked = true; @@ -72,7 +72,7 @@ void main() { }, initializeFlutterRoot: false); testUsingContext('throw tool exit if the version file cannot be written', () async { - final MockFlutterVersion version = FlutterVersion.instance; + final MockFlutterVersion version = FlutterVersion.instance as MockFlutterVersion; when(version.ensureVersionFile()).thenThrow(const FileSystemException()); expect(() async => await runner.run(['dummy']), throwsA(isA())); diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart index 166afe8030..744b3b6907 100644 --- a/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart @@ -58,7 +58,7 @@ void main() { Cache: () => cache, }); - void testUsingCommandContext(String testName, Function testBody) { + void testUsingCommandContext(String testName, dynamic Function() testBody) { testUsingContext(testName, testBody, overrides: { ProcessInfo: () => mockProcessInfo, SystemClock: () => clock, diff --git a/packages/flutter_tools/test/general.shard/runner/runner_test.dart b/packages/flutter_tools/test/general.shard/runner/runner_test.dart index db0be9edad..ba223aac64 100644 --- a/packages/flutter_tools/test/general.shard/runner/runner_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/runner_test.dart @@ -63,7 +63,7 @@ void main() { // exception on the first attempt, the second attempt tries to report the // *original* crash, and not the crash from the first crash report // attempt. - final CrashingUsage crashingUsage = flutterUsage; + final CrashingUsage crashingUsage = flutterUsage as CrashingUsage; expect(crashingUsage.sentException, 'runCommand'); }, overrides: { Platform: () => FakePlatform(environment: { diff --git a/packages/flutter_tools/test/general.shard/terminal_handler_test.dart b/packages/flutter_tools/test/general.shard/terminal_handler_test.dart index 8a034ff97a..838e728c12 100644 --- a/packages/flutter_tools/test/general.shard/terminal_handler_test.dart +++ b/packages/flutter_tools/test/general.shard/terminal_handler_test.dart @@ -3,11 +3,10 @@ // found in the LICENSE file. import 'dart:async'; + import 'package:flutter_tools/src/base/common.dart'; -import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/device.dart'; -import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/vmservice.dart'; import 'package:mockito/mockito.dart'; @@ -123,9 +122,7 @@ void main() { await terminalHandler.processTerminalInput('l'); - final BufferLogger bufferLogger = logger; - - expect(bufferLogger.statusText, contains('Connected views:\n')); + expect(testLogger.statusText, contains('Connected views:\n')); }); testUsingContext('L - debugDumpLayerTree with service protocol', () async { @@ -242,9 +239,7 @@ void main() { verify(mockResidentRunner.restart(fullRestart: false)).called(1); - final BufferLogger bufferLogger = logger; - - expect(bufferLogger.statusText, contains('Try again after fixing the above error(s).')); + expect(testLogger.statusText, contains('Try again after fixing the above error(s).')); }); testUsingContext('r - hotReload supported and fails fatally', () async { @@ -287,9 +282,7 @@ void main() { verify(mockResidentRunner.restart(fullRestart: true)).called(1); - final BufferLogger bufferLogger = logger; - - expect(bufferLogger.statusText, contains('Try again after fixing the above error(s).')); + expect(testLogger.statusText, contains('Try again after fixing the above error(s).')); }); testUsingContext('R - hotRestart supported and fails fatally', () async { diff --git a/packages/flutter_tools/test/general.shard/utils_test.dart b/packages/flutter_tools/test/general.shard/utils_test.dart index 509a8aa8ca..518dda8175 100644 --- a/packages/flutter_tools/test/general.shard/utils_test.dart +++ b/packages/flutter_tools/test/general.shard/utils_test.dart @@ -153,13 +153,13 @@ baz=qux 'wrapped and indentation preserved.'; final FakeStdio fakeStdio = FakeStdio(); - void testWrap(String description, Function body) { + void testWrap(String description, dynamic Function() body) { testUsingContext(description, body, overrides: { OutputPreferences: () => OutputPreferences(wrapText: true, wrapColumn: _lineLength), }); } - void testNoWrap(String description, Function body) { + void testNoWrap(String description, dynamic Function() body) { testUsingContext(description, body, overrides: { OutputPreferences: () => OutputPreferences(wrapText: false), }); diff --git a/packages/flutter_tools/test/general.shard/version_test.dart b/packages/flutter_tools/test/general.shard/version_test.dart index b438fecd3a..086a418b12 100644 --- a/packages/flutter_tools/test/general.shard/version_test.dart +++ b/packages/flutter_tools/test/general.shard/version_test.dart @@ -5,15 +5,14 @@ import 'dart:convert'; import 'package:collection/collection.dart' show ListEquality; -import 'package:flutter_tools/src/base/time.dart'; -import 'package:mockito/mockito.dart'; -import 'package:process/process.dart'; - import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; +import 'package:flutter_tools/src/base/time.dart'; +import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/version.dart'; +import 'package:mockito/mockito.dart'; +import 'package:process/process.dart'; import '../src/common.dart'; import '../src/context.dart'; @@ -414,9 +413,8 @@ void main() { } void _expectVersionMessage(String message) { - final BufferLogger logger = context.get(); - expect(logger.statusText.trim(), message.trim()); - logger.clear(); + expect(testLogger.statusText.trim(), message.trim()); + testLogger.clear(); } void fakeData( @@ -457,7 +455,7 @@ void fakeData( expect(invocation.positionalArguments.first, VersionCheckStamp.flutterVersionCheckStampFile); if (expectSetStamp) { - stamp = VersionCheckStamp.fromJson(json.decode(invocation.positionalArguments[1])); + stamp = VersionCheckStamp.fromJson(castStringKeyedMap(json.decode(invocation.positionalArguments[1] as String))); return null; } @@ -467,13 +465,13 @@ void fakeData( final Answering syncAnswer = (Invocation invocation) { bool argsAre(String a1, [ String a2, String a3, String a4, String a5, String a6, String a7, String a8, String a9 ]) { const ListEquality equality = ListEquality(); - final List args = invocation.positionalArguments.single; + final List args = invocation.positionalArguments.single as List; final List expectedArgs = [a1, a2, a3, a4, a5, a6, a7, a8, a9].where((String arg) => arg != null).toList(); return equality.equals(args, expectedArgs); } bool listArgsAre(List a) { - return Function.apply(argsAre, a); + return Function.apply(argsAre, a) as bool; } if (listArgsAre(FlutterVersion.gitLog(['-n', '1', '--pretty=format:%ad', '--date=iso']))) { diff --git a/packages/flutter_tools/test/general.shard/web/chrome_test.dart b/packages/flutter_tools/test/general.shard/web/chrome_test.dart index 422528469a..0025a3f072 100644 --- a/packages/flutter_tools/test/general.shard/web/chrome_test.dart +++ b/packages/flutter_tools/test/general.shard/web/chrome_test.dart @@ -85,7 +85,7 @@ void main() { await chromeLauncher.launch('example_url', skipCheck: true, dataDir: dataDir); final VerificationResult result = verify(processManager.start(captureAny)); - final String arg = result.captured.single + final String arg = (result.captured.single as List) .firstWhere((String arg) => arg.startsWith('--user-data-dir=')); final Directory tempDirectory = fs.directory(arg.split('=')[1]); final File tempFile = tempDirectory diff --git a/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart b/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart index 296acc507e..94b76a80f3 100644 --- a/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart +++ b/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart @@ -51,7 +51,7 @@ void main() { headers = MockHttpHeaders(); closeCompleter = Completer(); when(mockHttpServer.listen(any, onError: anyNamed('onError'))).thenAnswer((Invocation invocation) { - final Function callback = invocation.positionalArguments.first; + final void Function(HttpRequest) callback = invocation.positionalArguments.first as void Function(HttpRequest); return requestController.stream.listen(callback); }); when(request.response).thenReturn(response); diff --git a/packages/flutter_tools/test/general.shard/web/web_fs_test.dart b/packages/flutter_tools/test/general.shard/web/web_fs_test.dart index 2482140d7f..6fb7c413d2 100644 --- a/packages/flutter_tools/test/general.shard/web/web_fs_test.dart +++ b/packages/flutter_tools/test/general.shard/web/web_fs_test.dart @@ -48,7 +48,7 @@ void main() { mockProcessUtils = MockProcessUtils(); when(mockBuildDaemonCreator.startBuildDaemon(any, release: anyNamed('release'), initializePlatform: anyNamed('initializePlatform'))) .thenAnswer((Invocation invocation) async { - lastInitializePlatform = invocation.namedArguments[#initializePlatform]; + lastInitializePlatform = invocation.namedArguments[#initializePlatform] as bool; return mockBuildDaemonClient; }); when(mockOperatingSystemUtils.findFreePort()).thenAnswer((Invocation _) async { @@ -60,7 +60,7 @@ void main() { mapFunction: anyNamed('mapFunction'), environment: anyNamed('environment'), )).thenAnswer((Invocation invocation) async { - final String workingDirectory = invocation.namedArguments[#workingDirectory]; + final String workingDirectory = invocation.namedArguments[#workingDirectory] as String; fs.file(fs.path.join(workingDirectory, '.packages')).createSync(recursive: true); return 0; }); diff --git a/packages/flutter_tools/test/general.shard/windows/visual_studio_test.dart b/packages/flutter_tools/test/general.shard/windows/visual_studio_test.dart index bd9af7bcee..cd576f218a 100644 --- a/packages/flutter_tools/test/general.shard/windows/visual_studio_test.dart +++ b/packages/flutter_tools/test/general.shard/windows/visual_studio_test.dart @@ -81,8 +81,8 @@ void main() { final String finalResponse = responseOverride ?? json.encode(>[response]); - when(result.stdout).thenReturn(finalResponse); - when(result.stderr).thenReturn(''); + when(result.stdout as String).thenReturn(finalResponse); + when(result.stderr as String).thenReturn(''); final List requirementArguments = requiredComponents == null ? [] : ['-requires', ...requiredComponents]; @@ -180,8 +180,8 @@ void main() { )).thenAnswer((Invocation invocation) { return result; }); - when(result.stdout).thenReturn(''); - when(result.stderr).thenReturn(''); + when(result.stdout as String).thenReturn(''); + when(result.stderr as String).thenReturn(''); visualStudio = VisualStudio(); expect(visualStudio.isInstalled, false); diff --git a/packages/flutter_tools/test/integration.shard/test_driver.dart b/packages/flutter_tools/test/integration.shard/test_driver.dart index 9905c61fe2..314a479968 100644 --- a/packages/flutter_tools/test/integration.shard/test_driver.dart +++ b/packages/flutter_tools/test/integration.shard/test_driver.dart @@ -9,6 +9,7 @@ import 'package:file/file.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; +import 'package:flutter_tools/src/base/utils.dart'; import 'package:meta/meta.dart'; import 'package:process/process.dart'; import 'package:vm_service/vm_service.dart'; @@ -186,7 +187,7 @@ abstract class FlutterTestDriver { } Future _getFlutterIsolate() async { - final Isolate isolate = await _vmService.getIsolate(await _getFlutterIsolateId()); + final Isolate isolate = await _vmService.getIsolate(await _getFlutterIsolateId()) as Isolate; return isolate; } @@ -236,7 +237,7 @@ abstract class FlutterTestDriver { // But also check if the isolate was already paused (only after we've set // up the subscription) to avoid races. If it was paused, we don't need to wait // for the event. - final Isolate isolate = await _vmService.getIsolate(flutterIsolate); + final Isolate isolate = await _vmService.getIsolate(flutterIsolate) as Isolate; if (isolate.pauseEvent.kind.startsWith('Pause')) { _debugPrint('Isolate was already paused (${isolate.pauseEvent.kind}).'); } else { @@ -282,14 +283,14 @@ abstract class FlutterTestDriver { Future evaluateInFrame(String expression) async { return _timeoutWithMessages( - () async => await _vmService.evaluateInFrame(await _getFlutterIsolateId(), 0, expression), + () async => await _vmService.evaluateInFrame(await _getFlutterIsolateId(), 0, expression) as InstanceRef, task: 'Evaluating expression ($expression)', ); } Future evaluate(String targetId, String expression) async { return _timeoutWithMessages( - () async => await _vmService.evaluate(await _getFlutterIsolateId(), targetId, expression), + () async => await _vmService.evaluate(await _getFlutterIsolateId(), targetId, expression) as InstanceRef, task: 'Evaluating expression ($expression for $targetId)', ); } @@ -306,7 +307,7 @@ abstract class FlutterTestDriver { Future getSourceLocation() async { final String flutterIsolateId = await _getFlutterIsolateId(); final Frame frame = await getTopStackFrame(); - final Script script = await _vmService.getObject(flutterIsolateId, frame.location.script.id); + final Script script = await _vmService.getObject(flutterIsolateId, frame.location.script.id) as Script; return _lookupTokenPos(script.tokenPosTable, frame.location.tokenPos); } @@ -338,7 +339,7 @@ abstract class FlutterTestDriver { final Completer> response = Completer>(); StreamSubscription subscription; subscription = _stdout.stream.listen((String line) async { - final dynamic json = parseFlutterResponse(line); + final Map json = parseFlutterResponse(line); _lastResponse = line; if (json == null) { return; @@ -504,7 +505,7 @@ class FlutterRunTestDriver extends FlutterTestDriver { // _process.kill() (`flutter` is a shell script so _process itself is a // shell, not the flutter tool's Dart process). final Map connected = await _waitFor(event: 'daemon.connected'); - _processPid = connected['params']['pid']; + _processPid = connected['params']['pid'] as int; // Set this up now, but we don't wait it yet. We want to make sure we don't // miss it while waiting for debugPort below. @@ -512,7 +513,7 @@ class FlutterRunTestDriver extends FlutterTestDriver { if (withDebugger) { final Map debugPort = await _waitFor(event: 'app.debugPort', timeout: appStartTimeout); - final String wsUriString = debugPort['params']['wsUri']; + final String wsUriString = debugPort['params']['wsUri'] as String; _vmServiceWsUri = Uri.parse(wsUriString); await connectToVmService(pauseOnExceptions: pauseOnExceptions); if (!startPaused) { @@ -522,7 +523,7 @@ class FlutterRunTestDriver extends FlutterTestDriver { // Now await the started event; if it had already happened the future will // have already completed. - _currentRunningAppId = (await started)['params']['appId']; + _currentRunningAppId = (await started)['params']['appId'] as String; prematureExitGuard.complete(); } catch(error, stackTrace) { prematureExitGuard.completeError(error, stackTrace); @@ -677,11 +678,11 @@ class FlutterTestTestDriver extends FlutterTestDriver { // _proc.kill() (because _proc is a shell, because `flutter` is a shell // script). final Map version = await _waitForJson(); - _processPid = version['pid']; + _processPid = version['pid'] as int; if (withDebugger) { final Map startedProcess = await _waitFor(event: 'test.startedProcess', timeout: appStartTimeout); - final String vmServiceHttpString = startedProcess['params']['observatoryUri']; + final String vmServiceHttpString = startedProcess['params']['observatoryUri'] as String; _vmServiceWsUri = Uri.parse(vmServiceHttpString).replace(scheme: 'ws', path: '/ws'); await connectToVmService(pauseOnExceptions: pauseOnExceptions); // Allow us to run code before we start, eg. to set up breakpoints. @@ -706,7 +707,7 @@ class FlutterTestTestDriver extends FlutterTestDriver { Map _parseJsonResponse(String line) { try { - return json.decode(line); + return castStringKeyedMap(json.decode(line)); } catch (e) { // Not valid JSON, so likely some other output. return null; @@ -721,7 +722,7 @@ Stream transformToLines(Stream> byteStream) { Map parseFlutterResponse(String line) { if (line.startsWith('[') && line.endsWith(']')) { try { - final Map response = json.decode(line)[0]; + final Map response = castStringKeyedMap(json.decode(line)[0]); return response; } catch (e) { // Not valid JSON, so likely some other output that was surrounded by [brackets] diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index 116df60773..5b3b915740 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart @@ -38,10 +38,10 @@ export 'package:flutter_tools/src/base/context.dart' show Generator; export 'fake_process_manager.dart' show ProcessManager, FakeProcessManager, FakeCommand; /// Return the test logger. This assumes that the current Logger is a BufferLogger. -BufferLogger get testLogger => context.get(); +BufferLogger get testLogger => context.get() as BufferLogger; -FakeDeviceManager get testDeviceManager => context.get(); -FakeDoctor get testDoctor => context.get(); +FakeDeviceManager get testDeviceManager => context.get() as FakeDeviceManager; +FakeDoctor get testDoctor => context.get() as FakeDoctor; typedef ContextInitializer = void Function(AppContext testContext); @@ -149,7 +149,7 @@ void testUsingContext( void _printBufferedErrors(AppContext testContext) { if (testContext.get() is BufferLogger) { - final BufferLogger bufferLogger = testContext.get(); + final BufferLogger bufferLogger = testContext.get() as BufferLogger; if (bufferLogger.errorText.isNotEmpty) { print(bufferLogger.errorText); } diff --git a/packages/flutter_tools/test/src/fake_process_manager.dart b/packages/flutter_tools/test/src/fake_process_manager.dart index a76c863b16..06662923a5 100644 --- a/packages/flutter_tools/test/src/fake_process_manager.dart +++ b/packages/flutter_tools/test/src/fake_process_manager.dart @@ -212,7 +212,7 @@ abstract class FakeProcessManager implements ProcessManager { bool includeParentEnvironment = true, // ignored bool runInShell = false, // ignored ProcessStartMode mode = ProcessStartMode.normal, // ignored - }) async => _runCommand(command, workingDirectory, environment); + }) async => _runCommand(command.cast(), workingDirectory, environment); @override Future run( @@ -224,7 +224,7 @@ abstract class FakeProcessManager implements ProcessManager { Encoding stdoutEncoding = systemEncoding, Encoding stderrEncoding = systemEncoding, }) async { - final _FakeProcess process = _runCommand(command, workingDirectory, environment); + final _FakeProcess process = _runCommand(command.cast(), workingDirectory, environment); await process.exitCode; return ProcessResult( process.pid, @@ -244,7 +244,7 @@ abstract class FakeProcessManager implements ProcessManager { Encoding stdoutEncoding = systemEncoding, // actual encoder is ignored Encoding stderrEncoding = systemEncoding, // actual encoder is ignored }) { - final _FakeProcess process = _runCommand(command, workingDirectory, environment); + final _FakeProcess process = _runCommand(command.cast(), workingDirectory, environment); return ProcessResult( process.pid, process._exitCode, diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart index ae35b5282e..0c825043fe 100644 --- a/packages/flutter_tools/test/src/mocks.dart +++ b/packages/flutter_tools/test/src/mocks.dart @@ -177,14 +177,15 @@ class MockProcessManager extends Mock implements ProcessManager { bool runInShell = false, ProcessStartMode mode = ProcessStartMode.normal, }) { + final List commands = command.cast(); if (!runSucceeds) { - final String executable = command[0]; - final List arguments = command.length > 1 ? command.sublist(1) : []; + final String executable = commands[0]; + final List arguments = commands.length > 1 ? commands.sublist(1) : []; throw ProcessException(executable, arguments); } - commands = command; - return Future.value(processFactory(command)); + this.commands = commands; + return Future.value(processFactory(commands)); } } @@ -254,7 +255,7 @@ class MockProcess extends Mock implements Process { this.stdout = const Stream>.empty(), this.stderr = const Stream>.empty(), }) : exitCode = exitCode ?? Future.value(0), - stdin = stdin ?? MemoryIOSink(); + stdin = stdin as IOSink ?? MemoryIOSink(); @override final int pid; @@ -281,7 +282,7 @@ class FakeProcess implements Process { this.stdout = const Stream>.empty(), this.stderr = const Stream>.empty(), }) : exitCode = exitCode ?? Future.value(0), - stdin = stdin ?? MemoryIOSink(); + stdin = stdin as IOSink ?? MemoryIOSink(); @override final int pid; diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart index 978b79068d..1ad43065d1 100644 --- a/packages/flutter_tools/test/src/testbed.dart +++ b/packages/flutter_tools/test/src/testbed.dart @@ -5,7 +5,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'dart:typed_data'; import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/context.dart'; @@ -171,7 +170,7 @@ class NoOpUsage implements Usage { bool get isFirstRun => false; @override - Stream> get onSend => const Stream.empty(); + Stream> get onSend => const Stream>.empty(); @override void printWelcome() {} @@ -373,7 +372,7 @@ class FakeHttpClientRequest implements HttpClientRequest { } class FakeHttpClientResponse implements HttpClientResponse { - final Stream _delegate = Stream.fromIterable(const Iterable.empty()); + final Stream> _delegate = Stream>.fromIterable(const Iterable>.empty()); @override final HttpHeaders headers = FakeHttpHeaders(); @@ -404,8 +403,8 @@ class FakeHttpClientResponse implements HttpClientResponse { bool get isRedirect => false; @override - StreamSubscription listen(void Function(Uint8List event) onData, { Function onError, void Function() onDone, bool cancelOnError }) { - return const Stream.empty().listen(onData, onError: onError, onDone: onDone, cancelOnError: cancelOnError); + StreamSubscription> listen(void Function(List event) onData, { Function onError, void Function() onDone, bool cancelOnError }) { + return const Stream>.empty().listen(onData, onError: onError, onDone: onDone, cancelOnError: cancelOnError); } @override @@ -426,25 +425,25 @@ class FakeHttpClientResponse implements HttpClientResponse { int get statusCode => 400; @override - Future any(bool Function(Uint8List element) test) { + Future any(bool Function(List element) test) { return _delegate.any(test); } @override - Stream asBroadcastStream({ - void Function(StreamSubscription subscription) onListen, - void Function(StreamSubscription subscription) onCancel, + Stream> asBroadcastStream({ + void Function(StreamSubscription> subscription) onListen, + void Function(StreamSubscription> subscription) onCancel, }) { return _delegate.asBroadcastStream(onListen: onListen, onCancel: onCancel); } @override - Stream asyncExpand(Stream Function(Uint8List event) convert) { + Stream asyncExpand(Stream Function(List event) convert) { return _delegate.asyncExpand(convert); } @override - Stream asyncMap(FutureOr Function(Uint8List event) convert) { + Stream asyncMap(FutureOr Function(List event) convert) { return _delegate.asyncMap(convert); } @@ -459,7 +458,7 @@ class FakeHttpClientResponse implements HttpClientResponse { } @override - Stream distinct([bool Function(Uint8List previous, Uint8List next) equals]) { + Stream> distinct([bool Function(List previous, List next) equals]) { return _delegate.distinct(equals); } @@ -469,43 +468,43 @@ class FakeHttpClientResponse implements HttpClientResponse { } @override - Future elementAt(int index) { + Future> elementAt(int index) { return _delegate.elementAt(index); } @override - Future every(bool Function(Uint8List element) test) { + Future every(bool Function(List element) test) { return _delegate.every(test); } @override - Stream expand(Iterable Function(Uint8List element) convert) { + Stream expand(Iterable Function(List element) convert) { return _delegate.expand(convert); } @override - Future get first => _delegate.first; + Future> get first => _delegate.first; @override - Future firstWhere( - bool Function(Uint8List element) test, { + Future> firstWhere( + bool Function(List element) test, { List Function() orElse, }) { return _delegate.firstWhere(test, orElse: orElse); } @override - Future fold(S initialValue, S Function(S previous, Uint8List element) combine) { + Future fold(S initialValue, S Function(S previous, List element) combine) { return _delegate.fold(initialValue, combine); } @override - Future forEach(void Function(Uint8List element) action) { + Future forEach(void Function(List element) action) { return _delegate.forEach(action); } @override - Stream handleError( + Stream> handleError( Function onError, { bool Function(dynamic error) test, }) { @@ -524,11 +523,11 @@ class FakeHttpClientResponse implements HttpClientResponse { } @override - Future get last => _delegate.last; + Future> get last => _delegate.last; @override - Future lastWhere( - bool Function(Uint8List element) test, { + Future> lastWhere( + bool Function(List element) test, { List Function() orElse, }) { return _delegate.lastWhere(test, orElse: orElse); @@ -538,7 +537,7 @@ class FakeHttpClientResponse implements HttpClientResponse { Future get length => _delegate.length; @override - Stream map(S Function(Uint8List event) convert) { + Stream map(S Function(List event) convert) { return _delegate.map(convert); } @@ -548,53 +547,53 @@ class FakeHttpClientResponse implements HttpClientResponse { } @override - Future reduce(List Function(Uint8List previous, Uint8List element) combine) { + Future> reduce(List Function(List previous, List element) combine) { return _delegate.reduce(combine); } @override - Future get single => _delegate.single; + Future> get single => _delegate.single; @override - Future singleWhere(bool Function(Uint8List element) test, {List Function() orElse}) { + Future> singleWhere(bool Function(List element) test, {List Function() orElse}) { return _delegate.singleWhere(test, orElse: orElse); } @override - Stream skip(int count) { + Stream> skip(int count) { return _delegate.skip(count); } @override - Stream skipWhile(bool Function(Uint8List element) test) { + Stream> skipWhile(bool Function(List element) test) { return _delegate.skipWhile(test); } @override - Stream take(int count) { + Stream> take(int count) { return _delegate.take(count); } @override - Stream takeWhile(bool Function(Uint8List element) test) { + Stream> takeWhile(bool Function(List element) test) { return _delegate.takeWhile(test); } @override - Stream timeout( + Stream> timeout( Duration timeLimit, { - void Function(EventSink sink) onTimeout, + void Function(EventSink> sink) onTimeout, }) { return _delegate.timeout(timeLimit, onTimeout: onTimeout); } @override - Future> toList() { + Future>> toList() { return _delegate.toList(); } @override - Future> toSet() { + Future>> toSet() { return _delegate.toSet(); } @@ -604,7 +603,7 @@ class FakeHttpClientResponse implements HttpClientResponse { } @override - Stream where(bool Function(Uint8List event) test) { + Stream> where(bool Function(List event) test) { return _delegate.where(test); } } diff --git a/packages/flutter_tools/tool/daemon_client.dart b/packages/flutter_tools/tool/daemon_client.dart index 6314565d80..79a9744c47 100644 --- a/packages/flutter_tools/tool/daemon_client.dart +++ b/packages/flutter_tools/tool/daemon_client.dart @@ -27,7 +27,7 @@ Future main() async { .transform(utf8.decoder) .transform(const LineSplitter()) .listen((String line) => print('<== $line')); - daemon.stderr.listen((dynamic data) => stderr.add(data)); + daemon.stderr.listen(stderr.add); stdout.write('> '); stdin.transform(utf8.decoder).transform(const LineSplitter()).listen((String line) { diff --git a/packages/flutter_tools/tool/tool_coverage.dart b/packages/flutter_tools/tool/tool_coverage.dart index 1f02aec13b..44c8afb037 100644 --- a/packages/flutter_tools/tool/tool_coverage.dart +++ b/packages/flutter_tools/tool/tool_coverage.dart @@ -89,7 +89,7 @@ class VMPlatform extends PlatformPlugin { _pending.remove(codePath); })); final ServiceProtocolInfo info = await Service.controlWebServer(enable: true); - final dynamic channel = IsolateChannel.connectReceive(receivePort) + final StreamChannel channel = IsolateChannel.connectReceive(receivePort) .transformStream(StreamTransformer.fromHandlers( handleDone: (EventSink sink) async { try {