Begin migrating tools to NNBD (#3891)

- Updates dependencies to null-safe versions
- Migrates common.dart (which doesn't depend on anything)
- Migrates common_tests.dart and its one dependency, utils.dart
- Adds build_runner for Mockito mock generation
- Adds a new utility methods for getting arguments that handle both the casting and the removal of nullability to address a common problematic pattern while migrating code.
  - Converts all files, not just the migrated ones, to those new helpers.

Migrating common.dart and utils.dart should unblock a command-by-command migration to null safety.

Reverts the separate of podspect lints into a step that doesn't do a Flutter upgrade
(https://github.com/flutter/plugins/pull/3700) because without that step we had a
version of Dart too old to run null-safe tooling.

First step of https://github.com/flutter/flutter/issues/81912
This commit is contained in:
stuartmorgan
2021-05-14 20:04:26 -04:00
committed by GitHub
parent e46aa5583f
commit bd0081258a
37 changed files with 397 additions and 179 deletions

View File

@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// @dart=2.9
import 'dart:async';
import 'dart:io' as io;
@ -30,7 +32,7 @@ class FirebaseTestLabCommand extends PluginCommand {
defaultsTo:
p.join(io.Platform.environment['HOME'], 'gcloud-service-key.json'));
argParser.addOption('test-run-id',
defaultsTo: Uuid().v4(),
defaultsTo: const Uuid().v4(),
help:
'Optional string to append to the results path, to avoid conflicts. '
'Randomly chosen on each invocation if none is provided. '
@ -78,7 +80,7 @@ class FirebaseTestLabCommand extends PluginCommand {
<String>[
'auth',
'activate-service-account',
'--key-file=${argResults['service-key']}',
'--key-file=${getStringArg('service-key')}',
],
exitOnError: true,
logOnError: true,
@ -87,7 +89,7 @@ class FirebaseTestLabCommand extends PluginCommand {
'config',
'set',
'project',
argResults['project'] as String,
getStringArg('project'),
]);
if (exitCode == 0) {
_print('\nFirebase project configured.');
@ -125,7 +127,7 @@ class FirebaseTestLabCommand extends PluginCommand {
final Directory androidDirectory =
fileSystem.directory(p.join(exampleDirectory.path, 'android'));
final String enableExperiment = argResults[kEnableExperiment] as String;
final String enableExperiment = getStringArg(kEnableExperiment);
final String encodedEnableExperiment =
Uri.encodeComponent('--enable-experiment=$enableExperiment');
@ -213,7 +215,7 @@ class FirebaseTestLabCommand extends PluginCommand {
continue;
}
final String buildId = io.Platform.environment['CIRRUS_BUILD_ID'];
final String testRunId = argResults['test-run-id'] as String;
final String testRunId = getStringArg('test-run-id');
final String resultsDir =
'plugins_android_test/$packageName/$buildId/$testRunId/${resultsCounter++}/';
final List<String> args = <String>[
@ -229,10 +231,10 @@ class FirebaseTestLabCommand extends PluginCommand {
'build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk',
'--timeout',
'5m',
'--results-bucket=${argResults['results-bucket']}',
'--results-bucket=${getStringArg('results-bucket')}',
'--results-dir=$resultsDir',
];
for (final String device in argResults['device'] as List<String>) {
for (final String device in getStringListArg('device')) {
args.addAll(<String>['--device', device]);
}
exitCode = await processRunner.runAndStream('gcloud', args,