Fixes for test failures in Dart 2 mode (#18122)

diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart
index 304d9f2..1599f0e 100644
--- a/packages/flutter_tools/lib/src/android/android_workflow.dart
+++ b/packages/flutter_tools/lib/src/android/android_workflow.dart
@@ -237,7 +237,7 @@
     );
 
     process.stdin.addStream(stdin);
-    await waitGroup<Null>(<Future<Null>>[
+    await waitGroup<void>(<Future<void>>[
       stdout.addStream(process.stdout),
       stderr.addStream(process.stderr),
     ]);
diff --git a/packages/flutter_tools/lib/src/base/fingerprint.dart b/packages/flutter_tools/lib/src/base/fingerprint.dart
index 476bb1f..bac8de9 100644
--- a/packages/flutter_tools/lib/src/base/fingerprint.dart
+++ b/packages/flutter_tools/lib/src/base/fingerprint.dart
@@ -120,8 +120,8 @@
     final String version = content['version'];
     if (version != FlutterVersion.instance.frameworkRevision)
       throw new ArgumentError('Incompatible fingerprint version: $version');
-    _checksums = content['files'] ?? <String, String>{};
-    _properties = content['properties'] ?? <String, String>{};
+    _checksums = content['files']?.cast<String,String>() ?? <String, String>{};
+    _properties = content['properties']?.cast<String,String>() ?? <String, String>{};
   }
 
   Map<String, String> _checksums;
diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart
index 846b7de..475c7f9 100644
--- a/packages/flutter_tools/lib/src/devfs.dart
+++ b/packages/flutter_tools/lib/src/devfs.dart
@@ -441,7 +441,8 @@
     _entries.forEach((Uri deviceUri, DevFSContent content) {
       if (!content._exists) {
         final Future<Map<String, dynamic>> operation =
-            _operations.deleteFile(fsName, deviceUri);
+            _operations.deleteFile(fsName, deviceUri)
+            .then((dynamic v) => v?.cast<String,dynamic>());
         if (operation != null)
           _pendingOperations.add(operation);
         toRemove.add(deviceUri);
@@ -533,7 +534,8 @@
         // Make service protocol requests for each.
         dirtyEntries.forEach((Uri deviceUri, DevFSContent content) {
           final Future<Map<String, dynamic>> operation =
-              _operations.writeFile(fsName, deviceUri, content);
+              _operations.writeFile(fsName, deviceUri, content)
+                  .then((dynamic v) => v?.cast<String, dynamic>());
           if (operation != null)
             _pendingOperations.add(operation);
         });
diff --git a/packages/flutter_tools/test/android/android_device_test.dart b/packages/flutter_tools/test/android/android_device_test.dart
index 5fb766d..68ffa79 100644
--- a/packages/flutter_tools/test/android/android_device_test.dart
+++ b/packages/flutter_tools/test/android/android_device_test.dart
@@ -88,7 +88,7 @@
     setUp(() {
       hardware = 'unknown';
       buildCharacteristics = 'unused';
-      when(mockProcessManager.run(argThat(contains('getprop')),
+      when(mockProcessManager.run(typedArgThat(contains('getprop')),
           stderrEncoding: anyNamed('stderrEncoding'),
           stdoutEncoding: anyNamed('stdoutEncoding'))).thenAnswer((_) {
         final StringBuffer buf = new StringBuffer()
diff --git a/packages/flutter_tools/test/android/android_sdk_test.dart b/packages/flutter_tools/test/android/android_sdk_test.dart
index 6effc54..405f174 100644
--- a/packages/flutter_tools/test/android/android_sdk_test.dart
+++ b/packages/flutter_tools/test/android/android_sdk_test.dart
@@ -73,7 +73,8 @@
 
       final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
       when(processManager.canRun(sdk.sdkManagerPath)).thenReturn(true);
-      when(processManager.runSync(<String>[sdk.sdkManagerPath, '--version'], environment: argThat(isNotNull)))
+      when(processManager.runSync(<String>[sdk.sdkManagerPath, '--version'],
+          environment: typedArgThat(isNotNull,  named: 'environment')))
           .thenReturn(new ProcessResult(1, 0, '26.1.1\n', ''));
       expect(sdk.sdkManagerVersion, '26.1.1');
     }, overrides: <Type, Generator>{
@@ -87,7 +88,8 @@
 
       final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
       when(processManager.canRun(sdk.sdkManagerPath)).thenReturn(true);
-      when(processManager.runSync(<String>[sdk.sdkManagerPath, '--version'], environment: argThat(isNotNull)))
+      when(processManager.runSync(<String>[sdk.sdkManagerPath, '--version'],
+          environment: typedArgThat(isNotNull,  named: 'environment')))
           .thenReturn(new ProcessResult(1, 1, '26.1.1\n', 'Mystery error'));
       expect(sdk.sdkManagerVersion, isNull);
     }, overrides: <Type, Generator>{
diff --git a/packages/flutter_tools/test/base/build_test.dart b/packages/flutter_tools/test/base/build_test.dart
index 754af83..08b54b2 100644
--- a/packages/flutter_tools/test/base/build_test.dart
+++ b/packages/flutter_tools/test/base/build_test.dart
@@ -120,7 +120,7 @@
       GenSnapshot: () => genSnapshot,
     };
 
-    Future<Null> writeFingerprint({ Map<String, String> files = const <String, String>{} }) {
+    Future<void> writeFingerprint({ Map<String, String> files = const <String, String>{} }) {
       return fs.file('output.snapshot.d.fingerprint').writeAsString(json.encode(<String, dynamic>{
         'version': kVersion,
         'properties': <String, String>{
diff --git a/packages/flutter_tools/test/commands/daemon_test.dart b/packages/flutter_tools/test/commands/daemon_test.dart
index 037c123..7aedae9 100644
--- a/packages/flutter_tools/test/commands/daemon_test.dart
+++ b/packages/flutter_tools/test/commands/daemon_test.dart
@@ -61,7 +61,7 @@
       });
       expect(response['id'], isNull);
       expect(response['event'], 'daemon.logMessage');
-      final Map<String, String> logMessage = response['params'];
+      final Map<String, String> logMessage = response['params'].cast<String, String>();
       expect(logMessage['level'], 'error');
       expect(logMessage['message'], 'daemon.logMessage test');
       responses.close();
diff --git a/packages/flutter_tools/test/ios/cocoapods_test.dart b/packages/flutter_tools/test/ios/cocoapods_test.dart
index 0db5768..14f6907 100644
--- a/packages/flutter_tools/test/ios/cocoapods_test.dart
+++ b/packages/flutter_tools/test/ios/cocoapods_test.dart
@@ -142,7 +142,7 @@
 
     testUsingContext('creates swift Podfile if swift', () {
       when(mockXcodeProjectInterpreter.isInstalled).thenReturn(true);
-      when(mockXcodeProjectInterpreter.getBuildSettings(any, any)).thenReturn(<String, String>{
+      when(mockXcodeProjectInterpreter.getBuildSettings(typed(any), typed(any))).thenReturn(<String, String>{
         'SWIFT_VERSION': '4.0',
       });
 
@@ -204,7 +204,7 @@
         iosEngineDir: 'engine/path',
       );
       verifyNever(mockProcessManager.run(
-        argThat(containsAllInOrder(<String>['pod', 'install'])),
+      typedArgThat(containsAllInOrder(<String>['pod', 'install'])),
         workingDirectory: anyNamed('workingDirectory'),
         environment: anyNamed('environment'),
       ));
@@ -226,7 +226,7 @@
       } catch(e) {
         expect(e, const isInstanceOf<ToolExit>());
         verifyNever(mockProcessManager.run(
-          argThat(containsAllInOrder(<String>['pod', 'install'])),
+        typedArgThat(containsAllInOrder(<String>['pod', 'install'])),
           workingDirectory: anyNamed('workingDirectory'),
           environment: anyNamed('environment'),
         ));
@@ -437,7 +437,7 @@
       );
       expect(didInstall, isFalse);
       verifyNever(mockProcessManager.run(
-        argThat(containsAllInOrder(<String>['pod', 'install'])),
+      typedArgThat(containsAllInOrder(<String>['pod', 'install'])),
         workingDirectory: anyNamed('workingDirectory'),
         environment: anyNamed('environment'),
       ));
diff --git a/packages/flutter_tools/test/ios/code_signing_test.dart b/packages/flutter_tools/test/ios/code_signing_test.dart
index 5f18082..538450a 100644
--- a/packages/flutter_tools/test/ios/code_signing_test.dart
+++ b/packages/flutter_tools/test/ios/code_signing_test.dart
@@ -72,11 +72,12 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(exitsHappy);
 
+
       Map<String, String> signingConfigs;
       try {
         signingConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app);
@@ -96,7 +97,7 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(new ProcessResult(
@@ -123,7 +124,7 @@
       final MockStream mockStdErr = new MockStream();
 
       when(mockProcessManager.start(
-        argThat(contains('openssl')),
+      typedArgThat(contains('openssl')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenAnswer((Invocation invocation) => new Future<Process>.value(mockProcess));
@@ -155,7 +156,7 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(new ProcessResult(
@@ -182,7 +183,7 @@
       final MockStream mockStdErr = new MockStream();
 
       when(mockProcessManager.start(
-        argThat(contains('openssl')),
+      typedArgThat(contains('openssl')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenAnswer((Invocation invocation) => new Future<Process>.value(mockProcess));
@@ -218,7 +219,7 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(new ProcessResult(
@@ -249,7 +250,7 @@
       final MockStream mockOpenSslStdErr = new MockStream();
 
       when(mockProcessManager.start(
-        argThat(contains('openssl')),
+      typedArgThat(contains('openssl')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenAnswer((Invocation invocation) => new Future<Process>.value(mockOpenSslProcess));
@@ -292,7 +293,7 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(new ProcessResult(
@@ -323,7 +324,7 @@
       final MockStream mockOpenSslStdErr = new MockStream();
 
       when(mockProcessManager.start(
-        argThat(contains('openssl')),
+      typedArgThat(contains('openssl')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenAnswer((Invocation invocation) => new Future<Process>.value(mockOpenSslProcess));
@@ -360,7 +361,7 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(new ProcessResult(
@@ -389,7 +390,7 @@
       final MockStream mockOpenSslStdErr = new MockStream();
 
       when(mockProcessManager.start(
-        argThat(contains('openssl')),
+      typedArgThat(contains('openssl')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenAnswer((Invocation invocation) => new Future<Process>.value(mockOpenSslProcess));
@@ -430,7 +431,7 @@
       when(mockProcessManager.runSync(<String>['which', 'openssl']))
           .thenReturn(exitsHappy);
       when(mockProcessManager.runSync(
-        argThat(contains('find-identity')),
+      typedArgThat(contains('find-identity')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenReturn(new ProcessResult(
@@ -462,7 +463,7 @@
       final MockStream mockOpenSslStdErr = new MockStream();
 
       when(mockProcessManager.start(
-        argThat(contains('openssl')),
+      typedArgThat(contains('openssl')),
         environment: anyNamed('environment'),
         workingDirectory: anyNamed('workingDirectory'),
       )).thenAnswer((Invocation invocation) => new Future<Process>.value(mockOpenSslProcess));
diff --git a/packages/flutter_tools/test/ios/mac_test.dart b/packages/flutter_tools/test/ios/mac_test.dart
index 3772ab2..4bc6028 100644
--- a/packages/flutter_tools/test/ios/mac_test.dart
+++ b/packages/flutter_tools/test/ios/mac_test.dart
@@ -82,7 +82,7 @@
 
       testUsingContext('idevicescreenshot captures and returns screenshot', () async {
         when(mockOutputFile.path).thenReturn(outputPath);
-        when(mockProcessManager.run(any, environment: null, workingDirectory: null)).thenAnswer(
+        when(mockProcessManager.run(typed(any), environment: null, workingDirectory: null)).thenAnswer(
             (Invocation invocation) => new Future<ProcessResult>.value(new ProcessResult(4, 0, '', '')));
 
         await iMobileDevice.takeScreenshot(mockOutputFile);
diff --git a/packages/flutter_tools/test/ios/simulators_test.dart b/packages/flutter_tools/test/ios/simulators_test.dart
index 03fc530..6d4bc97 100644
--- a/packages/flutter_tools/test/ios/simulators_test.dart
+++ b/packages/flutter_tools/test/ios/simulators_test.dart
@@ -175,7 +175,7 @@
       mockProcessManager = new MockProcessManager();
       // Let everything else return exit code 0 so process.dart doesn't crash.
       when(
-        mockProcessManager.run(any, environment: null, workingDirectory: null)
+        mockProcessManager.run(typed(any), environment: null, workingDirectory: null)
       ).thenAnswer((Invocation invocation) =>
         new Future<ProcessResult>.value(new ProcessResult(2, 0, '', ''))
       );
@@ -229,7 +229,7 @@
 
     setUp(() {
       mockProcessManager = new MockProcessManager();
-      when(mockProcessManager.start(any, environment: null, workingDirectory: null))
+      when(mockProcessManager.start(typed(any), environment: null, workingDirectory: null))
         .thenAnswer((Invocation invocation) => new Future<Process>.value(new MockProcess()));
     });
 
@@ -237,7 +237,7 @@
       final IOSSimulator device = new IOSSimulator('x', name: 'iPhone SE', category: 'iOS 9.3');
       await launchDeviceLogTool(device);
       expect(
-        verify(mockProcessManager.start(captureAny, environment: null, workingDirectory: null)).captured.single,
+        verify(mockProcessManager.start(typed(captureAny), environment: null, workingDirectory: null)).captured.single,
         contains('tail'),
       );
     },
@@ -249,7 +249,7 @@
       final IOSSimulator device = new IOSSimulator('x', name: 'iPhone SE', category: 'iOS 11.0');
       await launchDeviceLogTool(device);
       expect(
-        verify(mockProcessManager.start(captureAny, environment: null, workingDirectory: null)).captured.single,
+        verify(mockProcessManager.start(typed(captureAny), environment: null, workingDirectory: null)).captured.single,
         contains('/usr/bin/log'),
       );
     },
@@ -271,7 +271,7 @@
       final IOSSimulator device = new IOSSimulator('x', name: 'iPhone SE', category: 'iOS 9.3');
       await launchSystemLogTool(device);
       expect(
-        verify(mockProcessManager.start(captureAny, environment: null, workingDirectory: null)).captured.single,
+        verify(mockProcessManager.start(typed(captureAny), environment: null, workingDirectory: null)).captured.single,
         contains('tail'),
       );
     },
diff --git a/packages/flutter_tools/test/ios/xcodeproj_test.dart b/packages/flutter_tools/test/ios/xcodeproj_test.dart
index 621e992..31b1bcc 100644
--- a/packages/flutter_tools/test/ios/xcodeproj_test.dart
+++ b/packages/flutter_tools/test/ios/xcodeproj_test.dart
@@ -282,7 +282,7 @@
     }
 
     testUsingOsxContext('sets ARCHS=armv7 when armv7 local engine is set', () async {
-      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, any)).thenReturn('engine');
+      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, typed(any))).thenReturn('engine');
       when(mockArtifacts.engineOutPath).thenReturn(fs.path.join('out', 'ios_profile_arm'));
       const BuildInfo buildInfo = const BuildInfo(BuildMode.debug, null,
         previewDart2: true,
@@ -302,7 +302,7 @@
     });
 
     testUsingOsxContext('sets TRACK_WIDGET_CREATION=true when trackWidgetCreation is true', () async {
-      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, any)).thenReturn('engine');
+      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, typed(any))).thenReturn('engine');
       when(mockArtifacts.engineOutPath).thenReturn(fs.path.join('out', 'ios_profile_arm'));
       const BuildInfo buildInfo = const BuildInfo(BuildMode.debug, null,
         previewDart2: true,
@@ -323,7 +323,7 @@
     });
 
     testUsingOsxContext('does not set TRACK_WIDGET_CREATION when trackWidgetCreation is false', () async {
-      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, any)).thenReturn('engine');
+      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, typed(any))).thenReturn('engine');
       when(mockArtifacts.engineOutPath).thenReturn(fs.path.join('out', 'ios_profile_arm'));
       const BuildInfo buildInfo = const BuildInfo(BuildMode.debug, null,
         previewDart2: true,
@@ -343,7 +343,7 @@
     });
 
     testUsingOsxContext('sets ARCHS=armv7 when armv7 local engine is set', () async {
-      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, any)).thenReturn('engine');
+      when(mockArtifacts.getArtifactPath(Artifact.flutterFramework, TargetPlatform.ios, typed(any))).thenReturn('engine');
       when(mockArtifacts.engineOutPath).thenReturn(fs.path.join('out', 'ios_profile'));
       const BuildInfo buildInfo = const BuildInfo(BuildMode.debug, null,
         previewDart2: true,
diff --git a/packages/flutter_tools/test/runner/flutter_command_test.dart b/packages/flutter_tools/test/runner/flutter_command_test.dart
index 6366eb0..6aa663e 100644
--- a/packages/flutter_tools/test/runner/flutter_command_test.dart
+++ b/packages/flutter_tools/test/runner/flutter_command_test.dart
@@ -60,7 +60,9 @@
       verify(clock.now()).called(2);
 
       expect(
-        verify(usage.sendTiming(captureAny, captureAny, captureAny, label: captureAny)).captured,
+        verify(usage.sendTiming(
+                typed(captureAny), typed(captureAny), typed(captureAny),
+                label: captureAnyNamed('label'))).captured,
         <dynamic>['flutter', 'dummy', const Duration(milliseconds: 1000), null]
       );
     },
@@ -77,7 +79,9 @@
           new DummyFlutterCommand(noUsagePath: true);
       await flutterCommand.run();
       verify(clock.now()).called(2);
-      verifyNever(usage.sendTiming(captureAny, captureAny, captureAny, label: captureAny));
+      verifyNever(usage.sendTiming(
+                   typed(captureAny), typed(captureAny), typed(captureAny),
+                   label: captureAnyNamed('label')));
     },
     overrides: <Type, Generator>{
       Clock: () => clock,
@@ -101,7 +105,9 @@
       await flutterCommand.run();
       verify(clock.now()).called(2);
       expect(
-        verify(usage.sendTiming(captureAny, captureAny, captureAny, label: captureAny)).captured,
+        verify(usage.sendTiming(
+                typed(captureAny), typed(captureAny), typed(captureAny),
+                label: captureAnyNamed('label'))).captured,
         <dynamic>[
           'flutter',
           'dummy',
@@ -130,8 +136,15 @@
         verify(clock.now()).called(2);
 
         expect(
-          verify(usage.sendTiming(captureAny, captureAny, captureAny, label: captureAny)).captured,
-          <dynamic>['flutter', 'dummy', const Duration(milliseconds: 1000), 'fail']
+          verify(usage.sendTiming(
+                  typed(captureAny), typed(captureAny), typed(captureAny),
+                  label: captureAnyNamed('label'))).captured,
+          <dynamic>[
+            'flutter',
+            'dummy',
+            const Duration(milliseconds: 1000),
+            'fail'
+          ]
         );
       }
     },