From 8ddc27e6077b0ce66e19d7d489a327f41d974f7d Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Wed, 31 Mar 2021 16:55:20 -0700 Subject: [PATCH] Split globals.dart into null sound and unsound libraries (#79016) --- .../bin/fuchsia_asset_builder.dart | 2 +- .../lib/src/android/android_studio.dart | 2 +- ...eferred_components_prebuild_validator.dart | 2 +- .../flutter_tools/lib/src/base/context.dart | 2 +- .../lib/src/base/user_messages.dart | 2 +- .../flutter_tools/lib/src/build_info.dart | 2 +- .../lib/src/build_system/targets/android.dart | 2 +- .../lib/src/build_system/targets/common.dart | 2 +- .../lib/src/build_system/targets/ios.dart | 2 +- .../lib/src/build_system/targets/macos.dart | 2 +- .../lib/src/commands/analyze_base.dart | 2 +- .../lib/src/commands/build_bundle.dart | 2 +- .../lib/src/commands/build_fuchsia.dart | 2 +- .../lib/src/commands/build_winuwp.dart | 2 +- .../lib/src/commands/generate.dart | 2 +- .../src/commands/generate_localizations.dart | 2 +- .../lib/src/commands/ide_config.dart | 2 +- .../lib/src/commands/install.dart | 2 +- .../flutter_tools/lib/src/commands/logs.dart | 2 +- .../lib/src/commands/screenshot.dart | 2 +- .../lib/src/commands/shell_completion.dart | 2 +- .../flutter_tools/lib/src/commands/test.dart | 2 +- .../lib/src/commands/update_packages.dart | 2 +- .../lib/src/fuchsia/application_package.dart | 2 +- .../lib/src/fuchsia/tiles_ctl.dart | 2 +- packages/flutter_tools/lib/src/globals.dart | 161 +----------------- .../lib/src/globals_null_migrated.dart | 161 ++++++++++++++++++ .../lib/src/linux/application_package.dart | 2 +- .../lib/src/localizations/gen_l10n.dart | 2 +- .../lib/src/macos/application_package.dart | 2 +- packages/flutter_tools/lib/src/run_cold.dart | 2 +- .../lib/src/test/coverage_collector.dart | 2 +- .../lib/src/test/flutter_platform.dart | 2 +- .../lib/src/test/flutter_web_goldens.dart | 2 +- .../lib/src/windows/application_package.dart | 2 +- .../hermetic/assemble_test.dart | 2 +- .../commands.shard/hermetic/attach_test.dart | 2 +- .../commands.shard/hermetic/clean_test.dart | 24 ++- .../commands.shard/hermetic/config_test.dart | 2 +- .../hermetic/create_usage_test.dart | 8 +- .../commands.shard/hermetic/daemon_test.dart | 2 +- .../commands.shard/hermetic/doctor_test.dart | 2 +- .../hermetic/ide_config_test.dart | 2 +- .../hermetic/shell_completion_test.dart | 2 +- .../permeable/build_aar_test.dart | 2 +- .../permeable/build_apk_test.dart | 2 +- .../permeable/build_appbundle_test.dart | 2 +- .../permeable/build_bundle_test.dart | 2 +- .../commands.shard/permeable/format_test.dart | 2 +- .../permeable/upgrade_test.dart | 2 +- .../android/android_studio_test.dart | 2 +- .../android_studio_validator_test.dart | 2 +- .../android/gradle_errors_test.dart | 2 +- .../general.shard/android/gradle_test.dart | 2 +- .../application_package_test.dart | 2 +- .../asset_bundle_package_fonts_test.dart | 2 +- .../asset_bundle_package_test.dart | 2 +- .../test/general.shard/asset_bundle_test.dart | 2 +- .../asset_bundle_variant_test.dart | 2 +- .../test/general.shard/asset_test.dart | 2 +- .../build_system/exceptions_test.dart | 2 +- .../build_system/targets/web_test.dart | 2 +- .../test/general.shard/bundle_shim_test.dart | 2 +- .../general.shard/devtools_launcher_test.dart | 2 +- .../fuchsia/fuchsia_device_test.dart | 2 +- .../general.shard/ios/code_signing_test.dart | 2 +- .../general.shard/ios/simulators_test.dart | 2 +- .../macos/application_package_test.dart | 2 +- .../general.shard/macos/cocoapods_test.dart | 85 ++++++--- .../test/general.shard/plugins_test.dart | 8 +- .../test/general.shard/project_test.dart | 25 +-- .../test/general.shard/testbed_test.dart | 2 +- .../web/golden_comparator_process_test.dart | 2 +- .../web/golden_comparator_test.dart | 2 +- .../web/web_expression_compiler_test.dart | 2 +- .../forbidden_imports_test.dart | 7 +- .../integration.shard/xcode_backend_test.dart | 2 +- .../test/src/android_common.dart | 2 +- packages/flutter_tools/test/src/common.dart | 2 +- packages/flutter_tools/test/src/context.dart | 2 +- packages/flutter_tools/test/src/mocks.dart | 2 +- .../test/src/pubspec_schema.dart | 2 +- packages/flutter_tools/test/src/testbed.dart | 2 +- packages/flutter_tools/tool/global_count.dart | 25 ++- 84 files changed, 357 insertions(+), 297 deletions(-) create mode 100644 packages/flutter_tools/lib/src/globals_null_migrated.dart diff --git a/packages/flutter_tools/bin/fuchsia_asset_builder.dart b/packages/flutter_tools/bin/fuchsia_asset_builder.dart index 4debac7ef73..248806d0720 100644 --- a/packages/flutter_tools/bin/fuchsia_asset_builder.dart +++ b/packages/flutter_tools/bin/fuchsia_asset_builder.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/context_runner.dart'; import 'package:flutter_tools/src/devfs.dart'; import 'package:flutter_tools/src/bundle.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/reporting/reporting.dart'; const String _kOptionPackages = 'packages'; diff --git a/packages/flutter_tools/lib/src/android/android_studio.dart b/packages/flutter_tools/lib/src/android/android_studio.dart index a70afa27081..1f080f25b4a 100644 --- a/packages/flutter_tools/lib/src/android/android_studio.dart +++ b/packages/flutter_tools/lib/src/android/android_studio.dart @@ -10,7 +10,7 @@ import '../base/io.dart'; import '../base/process.dart'; import '../base/utils.dart'; import '../base/version.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../ios/plist_parser.dart'; AndroidStudio get androidStudio => context.get(); diff --git a/packages/flutter_tools/lib/src/android/deferred_components_prebuild_validator.dart b/packages/flutter_tools/lib/src/android/deferred_components_prebuild_validator.dart index 30338e6e362..69aa782247d 100644 --- a/packages/flutter_tools/lib/src/android/deferred_components_prebuild_validator.dart +++ b/packages/flutter_tools/lib/src/android/deferred_components_prebuild_validator.dart @@ -12,7 +12,7 @@ import '../base/error_handling_io.dart'; import '../base/file_system.dart'; import '../base/logger.dart'; import '../base/platform.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../template.dart'; import 'deferred_components_validator.dart'; diff --git a/packages/flutter_tools/lib/src/base/context.dart b/packages/flutter_tools/lib/src/base/context.dart index 2b63d280886..23882b62625 100644 --- a/packages/flutter_tools/lib/src/base/context.dart +++ b/packages/flutter_tools/lib/src/base/context.dart @@ -113,7 +113,7 @@ class AppContext { /// Gets the value associated with the specified [type], or `null` if no /// such value has been associated. - T get() { + T? get() { dynamic value = _generateIfNecessary(T, _overrides); if (value == null && _parent != null) { value = _parent!.get(); diff --git a/packages/flutter_tools/lib/src/base/user_messages.dart b/packages/flutter_tools/lib/src/base/user_messages.dart index 95b325e5bd6..864b555ffd5 100644 --- a/packages/flutter_tools/lib/src/base/user_messages.dart +++ b/packages/flutter_tools/lib/src/base/user_messages.dart @@ -5,7 +5,7 @@ import 'context.dart'; import 'platform.dart'; -UserMessages get userMessages => context.get(); +UserMessages get userMessages => context.get()!; /// Class containing message strings that can be produced by Flutter tools. class UserMessages { diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart index 9979ec0010a..271554961e5 100644 --- a/packages/flutter_tools/lib/src/build_info.dart +++ b/packages/flutter_tools/lib/src/build_info.dart @@ -15,7 +15,7 @@ import 'base/os.dart'; import 'base/utils.dart'; import 'build_system/targets/icon_tree_shaker.dart'; import 'convert.dart'; -import 'globals.dart' as globals; +import 'globals_null_migrated.dart' as globals; /// Information about a build to be performed or used. class BuildInfo { 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 9f80f23a8bc..a9a615c4278 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/android.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/android.dart @@ -9,7 +9,7 @@ import '../../base/build.dart'; import '../../base/deferred_component.dart'; import '../../base/file_system.dart'; import '../../build_info.dart'; -import '../../globals.dart' as globals hide fs, artifacts, logger, processManager; +import '../../globals.dart' as globals show platform, printError, xcode; import '../../project.dart'; import '../build_system.dart'; import '../depfile.dart'; diff --git a/packages/flutter_tools/lib/src/build_system/targets/common.dart b/packages/flutter_tools/lib/src/build_system/targets/common.dart index 68cb8de7cc2..f22100901dc 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/common.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/common.dart @@ -12,7 +12,7 @@ import '../../base/file_system.dart'; import '../../build_info.dart'; import '../../compile.dart'; import '../../dart/package_map.dart'; -import '../../globals.dart' as globals hide fs, processManager, artifacts, logger; +import '../../globals.dart' as globals show xcode; import '../build_system.dart'; import '../depfile.dart'; import '../exceptions.dart'; diff --git a/packages/flutter_tools/lib/src/build_system/targets/ios.dart b/packages/flutter_tools/lib/src/build_system/targets/ios.dart index be5cccaa0ca..88c7c8d3614 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/ios.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/ios.dart @@ -12,7 +12,7 @@ import '../../base/common.dart'; import '../../base/file_system.dart'; import '../../base/io.dart'; import '../../build_info.dart'; -import '../../globals.dart' as globals hide fs, logger, processManager, artifacts; +import '../../globals.dart' as globals show xcode; import '../../macos/xcode.dart'; import '../../project.dart'; import '../build_system.dart'; diff --git a/packages/flutter_tools/lib/src/build_system/targets/macos.dart b/packages/flutter_tools/lib/src/build_system/targets/macos.dart index c5e849e9285..a4957c16a34 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/macos.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/macos.dart @@ -10,7 +10,7 @@ import '../../base/file_system.dart'; import '../../base/io.dart'; import '../../base/process.dart'; import '../../build_info.dart'; -import '../../globals.dart' as globals hide fs, logger, artifacts, processManager; +import '../../globals.dart' as globals show xcode; import '../build_system.dart'; import '../depfile.dart'; import '../exceptions.dart'; diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart index 478e52fb83b..02f3ece3875 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_base.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart @@ -18,7 +18,7 @@ import '../base/terminal.dart'; import '../base/utils.dart'; import '../cache.dart'; import '../dart/analysis.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; /// Common behavior for `flutter analyze` and `flutter analyze --watch` abstract class AnalyzeBase { diff --git a/packages/flutter_tools/lib/src/commands/build_bundle.dart b/packages/flutter_tools/lib/src/commands/build_bundle.dart index 0f61efbb815..f838ba88a13 100644 --- a/packages/flutter_tools/lib/src/commands/build_bundle.dart +++ b/packages/flutter_tools/lib/src/commands/build_bundle.dart @@ -8,7 +8,7 @@ import '../base/common.dart'; import '../build_info.dart'; import '../bundle.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../reporting/reporting.dart'; import '../runner/flutter_command.dart'; diff --git a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart index 3fd1cd98801..e26e7227e00 100644 --- a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart +++ b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart @@ -12,7 +12,7 @@ import '../cache.dart'; import '../features.dart'; import '../fuchsia/fuchsia_build.dart'; import '../fuchsia/fuchsia_pm.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../runner/flutter_command.dart' show FlutterCommandResult; import 'build.dart'; diff --git a/packages/flutter_tools/lib/src/commands/build_winuwp.dart b/packages/flutter_tools/lib/src/commands/build_winuwp.dart index a06987269bf..2e35018c98a 100644 --- a/packages/flutter_tools/lib/src/commands/build_winuwp.dart +++ b/packages/flutter_tools/lib/src/commands/build_winuwp.dart @@ -10,7 +10,7 @@ import '../base/common.dart'; import '../build_info.dart'; import '../cache.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../runner/flutter_command.dart' show FlutterCommandResult; import '../windows/build_windows.dart'; diff --git a/packages/flutter_tools/lib/src/commands/generate.dart b/packages/flutter_tools/lib/src/commands/generate.dart index a79aeef1045..b78bdc2fb29 100644 --- a/packages/flutter_tools/lib/src/commands/generate.dart +++ b/packages/flutter_tools/lib/src/commands/generate.dart @@ -4,7 +4,7 @@ // @dart = 2.8 -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; class GenerateCommand extends FlutterCommand { diff --git a/packages/flutter_tools/lib/src/commands/generate_localizations.dart b/packages/flutter_tools/lib/src/commands/generate_localizations.dart index 2df58125df5..8497e0abd38 100644 --- a/packages/flutter_tools/lib/src/commands/generate_localizations.dart +++ b/packages/flutter_tools/lib/src/commands/generate_localizations.dart @@ -7,7 +7,7 @@ import '../base/common.dart'; import '../base/file_system.dart'; import '../base/logger.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../localizations/gen_l10n.dart'; import '../localizations/gen_l10n_types.dart'; import '../localizations/localizations_utils.dart'; diff --git a/packages/flutter_tools/lib/src/commands/ide_config.dart b/packages/flutter_tools/lib/src/commands/ide_config.dart index d6fa7b185ce..cf5c6b6153d 100644 --- a/packages/flutter_tools/lib/src/commands/ide_config.dart +++ b/packages/flutter_tools/lib/src/commands/ide_config.dart @@ -7,7 +7,7 @@ import '../base/common.dart'; import '../base/file_system.dart'; import '../cache.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; import '../template.dart'; diff --git a/packages/flutter_tools/lib/src/commands/install.dart b/packages/flutter_tools/lib/src/commands/install.dart index e61218e82ef..1c0c321fdfb 100644 --- a/packages/flutter_tools/lib/src/commands/install.dart +++ b/packages/flutter_tools/lib/src/commands/install.dart @@ -9,7 +9,7 @@ import '../application_package.dart'; import '../base/common.dart'; import '../base/io.dart'; import '../device.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; class InstallCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart index c65397318f5..a21e360038c 100644 --- a/packages/flutter_tools/lib/src/commands/logs.dart +++ b/packages/flutter_tools/lib/src/commands/logs.dart @@ -10,7 +10,7 @@ import '../base/common.dart'; import '../base/io.dart'; import '../cache.dart'; import '../device.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; class LogsCommand extends FlutterCommand { diff --git a/packages/flutter_tools/lib/src/commands/screenshot.dart b/packages/flutter_tools/lib/src/commands/screenshot.dart index 978c31049dd..ff467008d03 100644 --- a/packages/flutter_tools/lib/src/commands/screenshot.dart +++ b/packages/flutter_tools/lib/src/commands/screenshot.dart @@ -10,7 +10,7 @@ import '../base/common.dart'; import '../base/file_system.dart'; import '../convert.dart'; import '../device.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; import '../vmservice.dart'; diff --git a/packages/flutter_tools/lib/src/commands/shell_completion.dart b/packages/flutter_tools/lib/src/commands/shell_completion.dart index 2732b673f68..b13f71c590c 100644 --- a/packages/flutter_tools/lib/src/commands/shell_completion.dart +++ b/packages/flutter_tools/lib/src/commands/shell_completion.dart @@ -8,7 +8,7 @@ import 'package:completion/completion.dart'; import '../base/common.dart'; import '../base/file_system.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; class ShellCompletionCommand extends FlutterCommand { diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index 96d67b040c2..e798412bde1 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart @@ -16,7 +16,7 @@ import '../bundle.dart'; import '../cache.dart'; import '../devfs.dart'; import '../device.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../runner/flutter_command.dart'; import '../test/coverage_collector.dart'; diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart index a777005a929..b19bb2cfeee 100644 --- a/packages/flutter_tools/lib/src/commands/update_packages.dart +++ b/packages/flutter_tools/lib/src/commands/update_packages.dart @@ -15,7 +15,7 @@ import '../base/logger.dart'; import '../base/net.dart'; import '../cache.dart'; import '../dart/pub.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../runner/flutter_command.dart'; /// Map from package name to package version, used to artificially pin a pub diff --git a/packages/flutter_tools/lib/src/fuchsia/application_package.dart b/packages/flutter_tools/lib/src/fuchsia/application_package.dart index 29c7d04682f..ada42ab48df 100644 --- a/packages/flutter_tools/lib/src/fuchsia/application_package.dart +++ b/packages/flutter_tools/lib/src/fuchsia/application_package.dart @@ -9,7 +9,7 @@ import 'package:meta/meta.dart'; import '../application_package.dart'; import '../base/file_system.dart'; import '../build_info.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; abstract class FuchsiaApp extends ApplicationPackage { diff --git a/packages/flutter_tools/lib/src/fuchsia/tiles_ctl.dart b/packages/flutter_tools/lib/src/fuchsia/tiles_ctl.dart index 190df58770d..bcdb70d3923 100644 --- a/packages/flutter_tools/lib/src/fuchsia/tiles_ctl.dart +++ b/packages/flutter_tools/lib/src/fuchsia/tiles_ctl.dart @@ -5,7 +5,7 @@ // @dart = 2.8 import '../base/process.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import 'fuchsia_device.dart'; diff --git a/packages/flutter_tools/lib/src/globals.dart b/packages/flutter_tools/lib/src/globals.dart index af7e187e7c0..0659fcb7473 100644 --- a/packages/flutter_tools/lib/src/globals.dart +++ b/packages/flutter_tools/lib/src/globals.dart @@ -4,35 +4,21 @@ // @dart = 2.8 -import 'package:process/process.dart'; - import 'android/android_sdk.dart'; import 'android/android_studio.dart'; import 'android/gradle_utils.dart'; import 'artifacts.dart'; import 'base/bot_detector.dart'; -import 'base/config.dart'; import 'base/context.dart'; -import 'base/error_handling_io.dart'; -import 'base/file_system.dart'; import 'base/io.dart'; -import 'base/logger.dart'; import 'base/net.dart'; -import 'base/os.dart'; -import 'base/platform.dart'; -import 'base/process.dart'; -import 'base/signals.dart'; -import 'base/template.dart'; -import 'base/terminal.dart'; -import 'base/time.dart'; -import 'base/user_messages.dart'; import 'build_system/build_system.dart'; import 'cache.dart'; import 'device.dart'; import 'doctor.dart'; import 'fuchsia/fuchsia_sdk.dart'; +import 'globals_null_migrated.dart' as globals; import 'ios/ios_workflow.dart'; -import 'ios/plist_parser.dart'; import 'ios/simulators.dart'; import 'ios/xcodeproj.dart'; import 'macos/cocoapods.dart'; @@ -44,24 +30,21 @@ import 'reporting/reporting.dart'; import 'runner/local_engine.dart'; import 'version.dart'; +export 'globals_null_migrated.dart'; + Artifacts get artifacts => context.get(); BuildSystem get buildSystem => context.get(); Cache get cache => context.get(); -Config get config => context.get(); CrashReporter get crashReporter => context.get(); Doctor get doctor => context.get(); -HttpClientFactory get httpClientFactory => context.get(); -Logger get logger => context.get(); -OperatingSystemUtils get os => context.get(); PersistentToolState get persistentToolState => PersistentToolState.instance; -Signals get signals => context.get() ?? LocalSignals.instance; Usage get flutterUsage => context.get(); DeviceManager get deviceManager => context.get(); FlutterProjectFactory get projectFactory { return context.get() ?? FlutterProjectFactory( - logger: logger, - fileSystem: fs, + logger: globals.logger, + fileSystem: globals.fs, ); } @@ -69,30 +52,6 @@ CocoaPodsValidator get cocoapodsValidator => context.get(); LocalEngineLocator get localEngineLocator => context.get(); -/// Currently active implementation of the file system. -/// -/// By default it uses local disk-based implementation. Override this in tests -/// with [MemoryFileSystem]. -FileSystem get fs => ErrorHandlingFileSystem( - delegate: context.get() ?? localFileSystem, - platform: platform, -); - -FileSystemUtils get fsUtils => context.get() ?? FileSystemUtils( - fileSystem: fs, - platform: platform, -); - -const ProcessManager _kLocalProcessManager = LocalProcessManager(); - -/// The active process manager. -ProcessManager get processManager => context.get() ?? _kLocalProcessManager; -ProcessUtils get processUtils => context.get(); - -const Platform _kLocalPlatform = LocalPlatform(); - -Platform get platform => context.get() ?? _kLocalPlatform; - AndroidStudio get androidStudio => context.get(); AndroidSdk get androidSdk => context.get(); CocoaPods get cocoaPods => context.get(); @@ -100,22 +59,14 @@ FlutterVersion get flutterVersion => context.get(); FuchsiaArtifacts get fuchsiaArtifacts => context.get(); IOSSimulatorUtils get iosSimulatorUtils => context.get(); IOSWorkflow get iosWorkflow => context.get(); -UserMessages get userMessages => context.get(); Xcode get xcode => context.get(); XcodeProjectInterpreter get xcodeProjectInterpreter => context.get(); XCDevice get xcdevice => context.get(); -final OutputPreferences _default = OutputPreferences( - wrapText: stdio.hasTerminal ?? false, - showColor: platform.stdoutSupportsAnsi, - stdio: stdio, -); -OutputPreferences get outputPreferences => context.get() ?? _default; - final BotDetector _defaultBotDetector = BotDetector( httpClientFactory: context.get() ?? () => HttpClient(), - platform: platform, + platform: globals.platform, persistentToolState: persistentToolState, ); @@ -123,105 +74,5 @@ BotDetector get botDetector => context.get() ?? _defaultBotDetector Future get isRunningOnBot => botDetector.isRunningOnBot; -/// The current system clock instance. -SystemClock get systemClock => context.get(); - -ProcessInfo get processInfo => context.get(); - -/// Display an error level message to the user. Commands should use this if they -/// fail in some way. -/// -/// Set [emphasis] to true to make the output bold if it's supported. -/// Set [color] to a [TerminalColor] to color the output, if the logger -/// supports it. The [color] defaults to [TerminalColor.red]. -void printError( - String message, { - StackTrace stackTrace, - bool emphasis, - TerminalColor color, - int indent, - int hangingIndent, - bool wrap, -}) { - logger.printError( - message, - stackTrace: stackTrace, - emphasis: emphasis ?? false, - color: color, - indent: indent, - hangingIndent: hangingIndent, - wrap: wrap, - ); -} - -/// Display normal output of the command. This should be used for things like -/// progress messages, success messages, or just normal command output. -/// -/// Set `emphasis` to true to make the output bold if it's supported. -/// -/// Set `newline` to false to skip the trailing linefeed. -/// -/// If `indent` is provided, each line of the message will be prepended by the -/// specified number of whitespaces. -void printStatus( - String message, { - bool emphasis, - bool newline, - TerminalColor color, - int indent, - int hangingIndent, - bool wrap, -}) { - logger.printStatus( - message, - emphasis: emphasis ?? false, - color: color, - newline: newline ?? true, - indent: indent, - hangingIndent: hangingIndent, - wrap: wrap, - ); -} - -/// Use this for verbose tracing output. Users can turn this output on in order -/// to help diagnose issues with the toolchain or with their setup. -void printTrace(String message) => logger.printTrace(message); - -AnsiTerminal get terminal { - return context?.get() ?? _defaultAnsiTerminal; -} - -final AnsiTerminal _defaultAnsiTerminal = AnsiTerminal( - stdio: stdio, - platform: platform, -); - -/// The global Stdio wrapper. -Stdio get stdio => context.get() ?? (_stdioInstance ??= Stdio()); -Stdio _stdioInstance; - -PlistParser get plistParser => context.get() ?? ( - _plistInstance ??= PlistParser( - fileSystem: fs, - processManager: processManager, - logger: logger, -)); -PlistParser _plistInstance; - -/// The global template renderer. -TemplateRenderer get templateRenderer => context.get(); - /// Gradle utils in the current [AppContext]. GradleUtils get gradleUtils => context.get(); - -ShutdownHooks get shutdownHooks => context.get(); - -// Unless we're in a test of this class's signal handling features, we must -// have only one instance created with the singleton LocalSignals instance -// and the catchable signals it considers to be fatal. -LocalFileSystem _instance; -LocalFileSystem get localFileSystem => _instance ??= LocalFileSystem( - LocalSignals.instance, - Signals.defaultExitSignals, - shutdownHooks, -); diff --git a/packages/flutter_tools/lib/src/globals_null_migrated.dart b/packages/flutter_tools/lib/src/globals_null_migrated.dart new file mode 100644 index 00000000000..d44995576ce --- /dev/null +++ b/packages/flutter_tools/lib/src/globals_null_migrated.dart @@ -0,0 +1,161 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:process/process.dart'; + +import 'base/config.dart'; +import 'base/context.dart'; +import 'base/error_handling_io.dart'; +import 'base/file_system.dart'; +import 'base/io.dart'; +import 'base/logger.dart'; +import 'base/net.dart'; +import 'base/os.dart'; +import 'base/platform.dart'; +import 'base/process.dart'; +import 'base/signals.dart'; +import 'base/template.dart'; +import 'base/terminal.dart'; +import 'base/time.dart'; +import 'base/user_messages.dart'; +import 'ios/plist_parser.dart'; + +Config get config => context.get()!; +HttpClientFactory get httpClientFactory => context.get()!; +Logger get logger => context.get()!; +OperatingSystemUtils get os => context.get()!; +Signals get signals => context.get() ?? LocalSignals.instance; + +/// Currently active implementation of the file system. +/// +/// By default it uses local disk-based implementation. Override this in tests +/// with [MemoryFileSystem]. +FileSystem get fs => ErrorHandlingFileSystem( + delegate: context.get() ?? localFileSystem, + platform: platform, +); + +FileSystemUtils get fsUtils => context.get() ?? FileSystemUtils( + fileSystem: fs, + platform: platform, +); + +const ProcessManager _kLocalProcessManager = LocalProcessManager(); + +/// The active process manager. +ProcessManager get processManager => context.get() ?? _kLocalProcessManager; +ProcessUtils get processUtils => context.get()!; + +const Platform _kLocalPlatform = LocalPlatform(); +Platform get platform => context.get() ?? _kLocalPlatform; + +UserMessages get userMessages => context.get()!; + +final OutputPreferences _default = OutputPreferences( + wrapText: stdio.hasTerminal, + showColor: platform.stdoutSupportsAnsi, + stdio: stdio, +); +OutputPreferences get outputPreferences => context.get() ?? _default; + +/// The current system clock instance. +SystemClock get systemClock => context.get() ?? _systemClock; +SystemClock _systemClock = const SystemClock(); + +ProcessInfo get processInfo => context.get()!; + +/// Display an error level message to the user. Commands should use this if they +/// fail in some way. +/// +/// Set [emphasis] to true to make the output bold if it's supported. +/// Set [color] to a [TerminalColor] to color the output, if the logger +/// supports it. The [color] defaults to [TerminalColor.red]. +void printError( + String message, { + StackTrace? stackTrace, + bool? emphasis, + TerminalColor? color, + int? indent, + int? hangingIndent, + bool? wrap, +}) { + logger.printError( + message, + stackTrace: stackTrace, + emphasis: emphasis ?? false, + color: color, + indent: indent, + hangingIndent: hangingIndent, + wrap: wrap, + ); +} + +/// Display normal output of the command. This should be used for things like +/// progress messages, success messages, or just normal command output. +/// +/// Set `emphasis` to true to make the output bold if it's supported. +/// +/// Set `newline` to false to skip the trailing linefeed. +/// +/// If `indent` is provided, each line of the message will be prepended by the +/// specified number of whitespaces. +void printStatus( + String message, { + bool? emphasis, + bool? newline, + TerminalColor? color, + int? indent, + int? hangingIndent, + bool? wrap, +}) { + logger.printStatus( + message, + emphasis: emphasis ?? false, + color: color, + newline: newline ?? true, + indent: indent, + hangingIndent: hangingIndent, + wrap: wrap, + ); +} + +/// Use this for verbose tracing output. Users can turn this output on in order +/// to help diagnose issues with the toolchain or with their setup. +void printTrace(String message) => logger.printTrace(message); + +AnsiTerminal get terminal { + return context.get() ?? _defaultAnsiTerminal; +} + +final AnsiTerminal _defaultAnsiTerminal = AnsiTerminal( + stdio: stdio, + platform: platform, +); + +/// The global Stdio wrapper. +Stdio get stdio => context.get() ?? (_stdioInstance ??= Stdio()); +Stdio? _stdioInstance; + +PlistParser get plistParser => context.get() ?? ( + _plistInstance ??= PlistParser( + fileSystem: fs, + processManager: processManager, + logger: logger, +)); +PlistParser? _plistInstance; + +/// The global template renderer. +TemplateRenderer get templateRenderer => context.get()!; + +ShutdownHooks? get shutdownHooks => context.get(); + +// Unless we're in a test of this class's signal handling features, we must +// have only one instance created with the singleton LocalSignals instance +// and the catchable signals it considers to be fatal. +LocalFileSystem? _instance; +LocalFileSystem get localFileSystem => _instance ??= LocalFileSystem( + LocalSignals.instance, + Signals.defaultExitSignals, + shutdownHooks, +); diff --git a/packages/flutter_tools/lib/src/linux/application_package.dart b/packages/flutter_tools/lib/src/linux/application_package.dart index 26b6d936615..0f9c723621d 100644 --- a/packages/flutter_tools/lib/src/linux/application_package.dart +++ b/packages/flutter_tools/lib/src/linux/application_package.dart @@ -10,7 +10,7 @@ import '../application_package.dart'; import '../base/file_system.dart'; import '../build_info.dart'; import '../cmake.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; abstract class LinuxApp extends ApplicationPackage { diff --git a/packages/flutter_tools/lib/src/localizations/gen_l10n.dart b/packages/flutter_tools/lib/src/localizations/gen_l10n.dart index b6553497d49..deab1c8fe0d 100644 --- a/packages/flutter_tools/lib/src/localizations/gen_l10n.dart +++ b/packages/flutter_tools/lib/src/localizations/gen_l10n.dart @@ -10,7 +10,7 @@ import '../base/file_system.dart'; import '../base/logger.dart'; import '../convert.dart'; import '../flutter_manifest.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import 'gen_l10n_templates.dart'; import 'gen_l10n_types.dart'; diff --git a/packages/flutter_tools/lib/src/macos/application_package.dart b/packages/flutter_tools/lib/src/macos/application_package.dart index 02b63545197..baeba59868b 100644 --- a/packages/flutter_tools/lib/src/macos/application_package.dart +++ b/packages/flutter_tools/lib/src/macos/application_package.dart @@ -11,7 +11,7 @@ import '../base/file_system.dart'; import '../base/io.dart'; import '../base/utils.dart'; import '../build_info.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../ios/plist_parser.dart'; import '../project.dart'; diff --git a/packages/flutter_tools/lib/src/run_cold.dart b/packages/flutter_tools/lib/src/run_cold.dart index 800102f0f53..5bcd6a66f6a 100644 --- a/packages/flutter_tools/lib/src/run_cold.dart +++ b/packages/flutter_tools/lib/src/run_cold.dart @@ -12,7 +12,7 @@ import 'base/common.dart'; import 'base/file_system.dart'; import 'build_info.dart'; import 'device.dart'; -import 'globals.dart' as globals; +import 'globals_null_migrated.dart' as globals; import 'resident_devtools_handler.dart'; import 'resident_runner.dart'; import 'tracing.dart'; diff --git a/packages/flutter_tools/lib/src/test/coverage_collector.dart b/packages/flutter_tools/lib/src/test/coverage_collector.dart index e1254636589..e7c9cda6705 100644 --- a/packages/flutter_tools/lib/src/test/coverage_collector.dart +++ b/packages/flutter_tools/lib/src/test/coverage_collector.dart @@ -12,7 +12,7 @@ import '../base/file_system.dart'; import '../base/io.dart'; import '../base/process.dart'; import '../base/utils.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../vmservice.dart'; import 'test_device.dart'; diff --git a/packages/flutter_tools/lib/src/test/flutter_platform.dart b/packages/flutter_tools/lib/src/test/flutter_platform.dart index 570b7b21035..b49b2d6527b 100644 --- a/packages/flutter_tools/lib/src/test/flutter_platform.dart +++ b/packages/flutter_tools/lib/src/test/flutter_platform.dart @@ -19,7 +19,7 @@ import '../compile.dart'; import '../convert.dart'; import '../dart/language_version.dart'; import '../device.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../test/test_wrapper.dart'; diff --git a/packages/flutter_tools/lib/src/test/flutter_web_goldens.dart b/packages/flutter_tools/lib/src/test/flutter_web_goldens.dart index 0b8559d8e6d..e7fd741afeb 100644 --- a/packages/flutter_tools/lib/src/test/flutter_web_goldens.dart +++ b/packages/flutter_tools/lib/src/test/flutter_web_goldens.dart @@ -12,7 +12,7 @@ import '../base/common.dart'; import '../base/file_system.dart'; import '../base/io.dart'; import '../convert.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import 'test_compiler.dart'; import 'test_config.dart'; diff --git a/packages/flutter_tools/lib/src/windows/application_package.dart b/packages/flutter_tools/lib/src/windows/application_package.dart index 94623bc6179..f0961b06d2e 100644 --- a/packages/flutter_tools/lib/src/windows/application_package.dart +++ b/packages/flutter_tools/lib/src/windows/application_package.dart @@ -11,7 +11,7 @@ import '../base/file_system.dart'; import '../base/utils.dart'; import '../build_info.dart'; import '../cmake.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; abstract class WindowsApp extends ApplicationPackage { 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 491c078c272..cdfd4e2b71c 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart @@ -14,7 +14,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/assemble.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; 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 aee3a598216..c225bdc1a0e 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart @@ -18,7 +18,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/attach.dart'; import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/device_port_forwader.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/devices.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/resident_runner.dart'; 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 63d00b53418..dd1f1faecbd 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart @@ -35,16 +35,10 @@ void main() { group('general', () { MemoryFileSystem fs; Directory buildDirectory; - FlutterProject projectUnderTest; - setUp(() { - fs = MemoryFileSystem.test(); - - final Directory currentDirectory = fs.currentDirectory; - buildDirectory = currentDirectory.childDirectory('build'); - buildDirectory.createSync(recursive: true); - - projectUnderTest = FlutterProject.fromDirectory(currentDirectory); + FlutterProject setupProjectUnderTest(Directory currentDirectory) { + // This needs to be run within testWithoutContext and not setUp since FlutterProject uses context. + final FlutterProject projectUnderTest = FlutterProject.fromDirectory(currentDirectory); projectUnderTest.ios.xcodeWorkspace.createSync(recursive: true); projectUnderTest.macos.xcodeWorkspace.createSync(recursive: true); @@ -65,9 +59,20 @@ void main() { projectUnderTest.windows.ephemeralDirectory.createSync(recursive: true); projectUnderTest.flutterPluginsFile.createSync(recursive: true); projectUnderTest.flutterPluginsDependenciesFile.createSync(recursive: true); + + return projectUnderTest; + } + + setUp(() { + fs = MemoryFileSystem.test(); + + final Directory currentDirectory = fs.currentDirectory; + buildDirectory = currentDirectory.childDirectory('build'); + buildDirectory.createSync(recursive: true); }); testUsingContext('$CleanCommand removes build and .dart_tool and ephemeral directories, cleans Xcode', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(fs.currentDirectory); // Xcode is installed and version satisfactory. when(mockXcodeProjectInterpreter.isInstalled).thenReturn(true); when(mockXcodeProjectInterpreter.majorVersion).thenReturn(1000); @@ -102,6 +107,7 @@ void main() { }); testUsingContext('$CleanCommand cleans Xcode verbosely', () async { + setupProjectUnderTest(fs.currentDirectory); // Xcode is installed and version satisfactory. when(mockXcodeProjectInterpreter.isInstalled).thenReturn(true); when(mockXcodeProjectInterpreter.majorVersion).thenReturn(1000); 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 410e2b239b0..e3dca07ce5c 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart @@ -14,7 +14,7 @@ import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/config.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/version.dart'; import 'package:test/fake.dart'; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart index 4641985d524..f6e50097d3e 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart @@ -11,7 +11,7 @@ import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/doctor.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; @@ -66,7 +66,7 @@ void main() { }); }); - test('set template type as usage value', () => testbed.run(() async { + testUsingContext('set template type as usage value', () => testbed.run(() async { final CreateCommand command = CreateCommand(); final CommandRunner runner = createTestCommandRunner(command); @@ -83,7 +83,7 @@ void main() { expect(await command.usageValues, containsPair(CustomDimensions.commandCreateProjectType, 'plugin')); })); - test('set iOS host language type as usage value', () => testbed.run(() async { + testUsingContext('set iOS host language type as usage value', () => testbed.run(() async { final CreateCommand command = CreateCommand(); final CommandRunner runner = createTestCommandRunner(command); @@ -104,7 +104,7 @@ void main() { })); - test('set Android host language type as usage value', () => testbed.run(() async { + testUsingContext('set Android host language type as usage value', () => testbed.run(() async { final CreateCommand command = CreateCommand(); final CommandRunner runner = createTestCommandRunner(command); 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 ff1c3438154..5f060b8da57 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/commands/daemon.dart'; import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/ios_workflow.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:mockito/mockito.dart'; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart index d015e571914..3b83049cfd3 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/doctor_test.dart @@ -22,7 +22,7 @@ import 'package:flutter_tools/src/commands/doctor.dart'; import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/doctor.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/version.dart'; import 'package:flutter_tools/src/vscode/vscode.dart'; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/ide_config_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/ide_config_test.dart index 1714ec3864b..289fb6a76af 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/ide_config_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/ide_config_test.dart @@ -9,7 +9,7 @@ import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/template.dart'; import 'package:flutter_tools/src/commands/ide_config.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; diff --git a/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart index fbc2e9d5333..b0ebc1bbb30 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/shell_completion_test.dart @@ -12,7 +12,7 @@ import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/shell_completion.dart'; import 'package:process/process.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart index 88101efa83f..11e91a06abf 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/build_aar_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build_aar.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:meta/meta.dart'; import 'package:process/process.dart'; import 'package:test/fake.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart index 57ddda9144f..3f82a1cd3d1 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart @@ -16,7 +16,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build_apk.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart index ac8d9cff413..91ba74d998f 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart @@ -11,7 +11,7 @@ import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build_appbundle.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:process/process.dart'; 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 5f5f34995bc..ef86bedb3b0 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 @@ -17,7 +17,7 @@ import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/format_test.dart b/packages/flutter_tools/test/commands.shard/permeable/format_test.dart index 3512f066d8d..7e6caf8be19 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/format_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/format_test.dart @@ -8,7 +8,7 @@ import 'package:args/command_runner.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/format.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart b/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart index 5817322fb0d..25cc5a29834 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/upgrade_test.dart @@ -10,7 +10,7 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/upgrade.dart'; import 'package:flutter_tools/src/convert.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/persistent_tool_state.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/version.dart'; diff --git a/packages/flutter_tools/test/general.shard/android/android_studio_test.dart b/packages/flutter_tools/test/general.shard/android/android_studio_test.dart index c8ad60fee02..1366397513f 100644 --- a/packages/flutter_tools/test/general.shard/android/android_studio_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_studio_test.dart @@ -9,7 +9,7 @@ import 'package:flutter_tools/src/android/android_studio.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/version.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/plist_parser.dart'; import 'package:test/fake.dart'; diff --git a/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart b/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart index 9e5700d1a6f..7f303f4fb24 100644 --- a/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_studio_validator_test.dart @@ -12,7 +12,7 @@ import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/user_messages.dart'; import 'package:flutter_tools/src/doctor.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; 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 6b687ec4d91..941716f0f36 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 @@ -10,7 +10,7 @@ import 'package:flutter_tools/src/android/gradle_errors.dart'; import 'package:flutter_tools/src/android/gradle_utils.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/platform.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; 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 3e9f5a3e36d..af2ce01e910 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart @@ -17,7 +17,7 @@ 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'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:mockito/mockito.dart'; 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 a44b1ccd097..23ce00cd2ac 100644 --- a/packages/flutter_tools/test/general.shard/application_package_test.dart +++ b/packages/flutter_tools/test/general.shard/application_package_test.dart @@ -17,7 +17,7 @@ import 'package:flutter_tools/src/base/user_messages.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/fuchsia/application_package.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/application_package.dart'; import 'package:flutter_tools/src/ios/plist_parser.dart'; import 'package:flutter_tools/src/project.dart'; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart index a312ea91971..ac49c9529d5 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart @@ -12,7 +12,7 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/asset.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart index a733bd2f517..eec7eff438e 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart @@ -12,7 +12,7 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/asset.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_test.dart index e6315d15d3e..12451212d96 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/bundle.dart'; import 'package:flutter_tools/src/devfs.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart index 7ae9dd1f425..a321d7d0839 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart @@ -12,7 +12,7 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/asset.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/asset_test.dart b/packages/flutter_tools/test/general.shard/asset_test.dart index 55b7f507bbd..68008e1e83c 100644 --- a/packages/flutter_tools/test/general.shard/asset_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_test.dart @@ -6,7 +6,7 @@ import 'package:flutter_tools/src/asset.dart'; import 'package:flutter_tools/src/cache.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/build_system/exceptions_test.dart b/packages/flutter_tools/test/general.shard/build_system/exceptions_test.dart index ed493e76580..ab1a492a261 100644 --- a/packages/flutter_tools/test/general.shard/build_system/exceptions_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/exceptions_test.dart @@ -7,7 +7,7 @@ import 'package:flutter_tools/src/base/file_system.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/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart index 08a9062cb2d..db38c3f0e27 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/build_system/depfile.dart'; import 'package:flutter_tools/src/build_system/targets/common.dart'; import 'package:flutter_tools/src/build_system/targets/web.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:process/process.dart'; import '../../../src/common.dart'; 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 08d6357a3a2..00f03ad5622 100644 --- a/packages/flutter_tools/test/general.shard/bundle_shim_test.dart +++ b/packages/flutter_tools/test/general.shard/bundle_shim_test.dart @@ -10,7 +10,7 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/bundle.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/devtools_launcher_test.dart b/packages/flutter_tools/test/general.shard/devtools_launcher_test.dart index d88adb1487b..62b34cbde1e 100644 --- a/packages/flutter_tools/test/general.shard/devtools_launcher_test.dart +++ b/packages/flutter_tools/test/general.shard/devtools_launcher_test.dart @@ -11,7 +11,7 @@ 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/devtools_launcher.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/persistent_tool_state.dart'; import 'package:flutter_tools/src/resident_runner.dart'; 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 622e0eb9abf..8d2b22fa6ce 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 @@ -32,7 +32,7 @@ import 'package:flutter_tools/src/fuchsia/fuchsia_pm.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_sdk.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart'; import 'package:flutter_tools/src/fuchsia/tiles_ctl.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/vmservice.dart'; import 'package:meta/meta.dart'; 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 0046a013541..82b597e92bb 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 @@ -12,7 +12,7 @@ import 'package:flutter_tools/src/base/config.dart'; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/ios/code_signing.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; 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 fb5ff6986aa..a27d4996b5b 100644 --- a/packages/flutter_tools/test/general.shard/ios/simulators_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/simulators_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/devfs.dart'; import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/device_port_forwader.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/application_package.dart'; import 'package:flutter_tools/src/ios/plist_parser.dart'; import 'package:flutter_tools/src/ios/simulators.dart'; diff --git a/packages/flutter_tools/test/general.shard/macos/application_package_test.dart b/packages/flutter_tools/test/general.shard/macos/application_package_test.dart index 2607ae22f6a..78ff425ed28 100644 --- a/packages/flutter_tools/test/general.shard/macos/application_package_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/application_package_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/base/os.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/ios/plist_parser.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/macos/application_package.dart'; import 'package:mockito/mockito.dart'; diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart index 5b3fda7c68a..7f83e56071e 100644 --- a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart @@ -27,7 +27,6 @@ typedef InvokeProcess = Future Function(); void main() { FileSystem fileSystem; FakeProcessManager fakeProcessManager; - FlutterProject projectUnderTest; CocoaPods cocoaPodsUnderTest; BufferLogger logger; TestUsage usage; @@ -58,14 +57,19 @@ void main() { )).createSync(recursive: true); } + FlutterProject setupProjectUnderTest() { + // This needs to be run within testWithoutContext and not setUp since FlutterProject uses context. + final FlutterProject projectUnderTest = FlutterProject.fromDirectory(fileSystem.directory('project')); + projectUnderTest.ios.xcodeProject.createSync(recursive: true); + projectUnderTest.macos.xcodeProject.createSync(recursive: true); + return projectUnderTest; + } + setUp(() async { Cache.flutterRoot = 'flutter'; fileSystem = MemoryFileSystem.test(); fakeProcessManager = FakeProcessManager.list([]); logger = BufferLogger.test(); - projectUnderTest = FlutterProject.fromDirectory(fileSystem.directory('project')); - projectUnderTest.ios.xcodeProject.createSync(recursive: true); - projectUnderTest.macos.xcodeProject.createSync(recursive: true); usage = TestUsage(); cocoaPodsUnderTest = CocoaPods( fileSystem: fileSystem, @@ -173,13 +177,15 @@ void main() { }); group('Setup Podfile', () { - testWithoutContext('creates objective-c Podfile when not present', () async { + testUsingContext('creates objective-c Podfile when not present', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); await cocoaPodsUnderTest.setupPodfile(projectUnderTest.ios); expect(projectUnderTest.ios.podfile.readAsStringSync(), 'Objective-C iOS podfile template'); }); - testWithoutContext('creates swift Podfile if swift', () async { + testUsingContext('creates swift Podfile if swift', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); final FakeXcodeProjectInterpreter fakeXcodeProjectInterpreter = FakeXcodeProjectInterpreter(buildSettings: { 'SWIFT_VERSION': '5.0', }); @@ -198,14 +204,16 @@ void main() { expect(projectUnderTest.ios.podfile.readAsStringSync(), 'Swift iOS podfile template'); }); - testWithoutContext('creates macOS Podfile when not present', () async { + testUsingContext('creates macOS Podfile when not present', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); projectUnderTest.macos.xcodeProject.createSync(recursive: true); await cocoaPodsUnderTest.setupPodfile(projectUnderTest.macos); expect(projectUnderTest.macos.podfile.readAsStringSync(), 'macOS podfile template'); }); - testWithoutContext('does not recreate Podfile when already present', () async { + testUsingContext('does not recreate Podfile when already present', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); projectUnderTest.ios.podfile..createSync()..writeAsStringSync('Existing Podfile'); final FlutterProject project = FlutterProject.fromDirectoryTest(fileSystem.directory('project')); @@ -214,7 +222,8 @@ void main() { expect(projectUnderTest.ios.podfile.readAsStringSync(), 'Existing Podfile'); }); - testWithoutContext('does not create Podfile when we cannot interpret Xcode projects', () async { + testUsingContext('does not create Podfile when we cannot interpret Xcode projects', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); final CocoaPods cocoaPodsUnderTest = CocoaPods( fileSystem: fileSystem, processManager: fakeProcessManager, @@ -230,7 +239,8 @@ void main() { expect(projectUnderTest.ios.podfile.existsSync(), false); }); - testWithoutContext('includes Pod config in xcconfig files, if not present', () async { + testUsingContext('includes Pod config in xcconfig files, if not present', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); projectUnderTest.ios.podfile..createSync()..writeAsStringSync('Existing Podfile'); projectUnderTest.ios.xcodeConfigFor('Debug') ..createSync(recursive: true) @@ -252,7 +262,8 @@ void main() { expect(releaseContents, contains('Existing release config')); }); - testWithoutContext('does not include Pod config in xcconfig files, if legacy non-option include present', () async { + testUsingContext('does not include Pod config in xcconfig files, if legacy non-option include present', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); projectUnderTest.ios.podfile..createSync()..writeAsStringSync('Existing Podfile'); const String legacyDebugInclude = '#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig'; @@ -280,6 +291,7 @@ void main() { group('Update xcconfig', () { testUsingContext('includes Pod config in xcconfig files, if the user manually added Pod dependencies without using Flutter plugins', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); fileSystem.file(fileSystem.path.join('project', 'foo', '.packages')) ..createSync(recursive: true) ..writeAsStringSync('\n'); @@ -315,7 +327,8 @@ void main() { podsIsInHomeDir(); }); - testWithoutContext('throwsToolExit if CocoaPods is not installed', () async { + testUsingContext('throwsToolExit if CocoaPods is not installed', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsNotInstalled(); projectUnderTest.ios.podfile.createSync(); await expectLater(cocoaPodsUnderTest.processPods( @@ -326,7 +339,8 @@ void main() { expect(fakeProcessManager, hasNoRemainingExpectations); }); - testWithoutContext('throwsToolExit if CocoaPods install is broken', () async { + testUsingContext('throwsToolExit if CocoaPods install is broken', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsBroken(); projectUnderTest.ios.podfile.createSync(); await expectLater(cocoaPodsUnderTest.processPods( @@ -337,7 +351,8 @@ void main() { expect(fakeProcessManager, hasNoRemainingExpectations); }); - testWithoutContext('exits if Podfile creates the Flutter engine symlink', () async { + testUsingContext('exits if Podfile creates the Flutter engine symlink', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); fileSystem.file(fileSystem.path.join('project', 'ios', 'Podfile')) ..createSync() ..writeAsStringSync('Existing Podfile'); @@ -353,7 +368,8 @@ void main() { expect(fakeProcessManager, hasNoRemainingExpectations); }); - testWithoutContext('exits if iOS Podfile parses .flutter-plugins', () async { + testUsingContext('exits if iOS Podfile parses .flutter-plugins', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); fileSystem.file(fileSystem.path.join('project', 'ios', 'Podfile')) ..createSync() ..writeAsStringSync('plugin_pods = parse_KV_file(\'../.flutter-plugins\')'); @@ -365,7 +381,8 @@ void main() { expect(fakeProcessManager, hasNoRemainingExpectations); }); - testWithoutContext('prints warning if macOS Podfile parses .flutter-plugins', () async { + testUsingContext('prints warning if macOS Podfile parses .flutter-plugins', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); fakeProcessManager.addCommand( @@ -388,7 +405,8 @@ void main() { expect(fakeProcessManager, hasNoRemainingExpectations); }); - testWithoutContext('throws, if Podfile is missing.', () async { + testUsingContext('throws, if Podfile is missing.', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); await expectLater(cocoaPodsUnderTest.processPods( xcodeProject: projectUnderTest.ios, buildMode: BuildMode.debug, @@ -396,7 +414,8 @@ void main() { expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('throws, if specs repo is outdated.', () async { + testUsingContext('throws, if specs repo is outdated.', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); fileSystem.file(fileSystem.path.join('project', 'ios', 'Podfile')) @@ -440,7 +459,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by ); }); - testWithoutContext('ffi failure on ARM macOS prompts gem install', () async { + testUsingContext('ffi failure on ARM macOS prompts gem install', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); fileSystem.file(fileSystem.path.join('project', 'ios', 'Podfile')) @@ -481,7 +501,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(usage.events, contains(const TestUsageEvent('pod-install-failure', 'arm-ffi'))); }); - testWithoutContext('ffi failure on x86 macOS does not prompt gem install', () async { + testUsingContext('ffi failure on x86 macOS does not prompt gem install', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); fileSystem.file(fileSystem.path.join('project', 'ios', 'Podfile')) @@ -524,7 +545,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(buffer.isEmpty, true); }); - testWithoutContext('run pod install, if Podfile.lock is missing', () async { + testUsingContext('run pod install, if Podfile.lock is missing', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.ios.podfile @@ -550,7 +572,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('runs iOS pod install, if Manifest.lock is missing', () async { + testUsingContext('runs iOS pod install, if Manifest.lock is missing', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.ios.podfile @@ -575,7 +598,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('runs macOS pod install, if Manifest.lock is missing', () async { + testUsingContext('runs macOS pod install, if Manifest.lock is missing', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.macos.podfile @@ -600,7 +624,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('runs pod install, if Manifest.lock different from Podspec.lock', () async { + testUsingContext('runs pod install, if Manifest.lock different from Podspec.lock', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.ios.podfile @@ -628,7 +653,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('runs pod install, if flutter framework changed', () async { + testUsingContext('runs pod install, if flutter framework changed', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.ios.podfile @@ -656,7 +682,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('runs pod install, if Podfile.lock is older than Podfile', () async { + testUsingContext('runs pod install, if Podfile.lock is older than Podfile', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.ios.podfile @@ -686,7 +713,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('skips pod install, if nothing changed', () async { + testUsingContext('skips pod install, if nothing changed', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); projectUnderTest.ios.podfile ..createSync() ..writeAsStringSync('Existing Podfile'); @@ -705,7 +733,8 @@ Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by expect(fakeProcessManager.hasRemainingExpectations, isFalse); }); - testWithoutContext('a failed pod install deletes Pods/Manifest.lock', () async { + testUsingContext('a failed pod install deletes Pods/Manifest.lock', () async { + final FlutterProject projectUnderTest = setupProjectUnderTest(); pretendPodIsInstalled(); pretendPodVersionIs('1.10.0'); projectUnderTest.ios.podfile diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart index ff310393447..b828e7a24fc 100644 --- a/packages/flutter_tools/test/general.shard/plugins_test.dart +++ b/packages/flutter_tools/test/general.shard/plugins_test.dart @@ -14,7 +14,7 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/time.dart'; import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/xcodeproj.dart'; import 'package:flutter_tools/src/plugins.dart'; import 'package:flutter_tools/src/project.dart'; @@ -1307,7 +1307,7 @@ flutter: projectDir.childFile('pubspec.yaml')..createSync(recursive: true)..writeAsStringSync(yamlString); } - test('validatePubspecForPlugin works', () async { + testUsingContext('validatePubspecForPlugin works', () async { const String pluginYaml = ''' flutter: plugin: @@ -1333,7 +1333,7 @@ flutter: ], androidIdentifier: 'AndroidPackage', webFileName: 'lib/SomeFile.dart'); }); - test('createPlatformsYamlMap should create the correct map', () async { + testUsingContext('createPlatformsYamlMap should create the correct map', () async { final YamlMap map = Plugin.createPlatformsYamlMap(['ios', 'android', 'linux'], 'PluginClass', 'some.android.package'); expect(map['ios'], { 'pluginClass' : 'PluginClass' @@ -1347,7 +1347,7 @@ flutter: }); }); - test('createPlatformsYamlMap should create empty map', () async { + testUsingContext('createPlatformsYamlMap should create empty map', () async { final YamlMap map = Plugin.createPlatformsYamlMap([], null, null); expect(map.isEmpty, true); }); diff --git a/packages/flutter_tools/test/general.shard/project_test.dart b/packages/flutter_tools/test/general.shard/project_test.dart index 2a0a9282aed..e34c3a2e245 100644 --- a/packages/flutter_tools/test/general.shard/project_test.dart +++ b/packages/flutter_tools/test/general.shard/project_test.dart @@ -8,6 +8,7 @@ import 'package:file/file.dart'; import 'package:file/memory.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/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/convert.dart'; @@ -16,7 +17,7 @@ import 'package:flutter_tools/src/flutter_manifest.dart'; import 'package:flutter_tools/src/ios/plist_parser.dart'; import 'package:flutter_tools/src/ios/xcodeproj.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:meta/meta.dart'; import 'package:mockito/mockito.dart'; @@ -809,10 +810,16 @@ void _testInMemory(String description, Future Function() testMethod) { ..writeAsStringSync('{"configVersion":2,"packages":[]}'); // Transfer needed parts of the Flutter installation folder // to the in-memory file system used during testing. + final Logger logger = BufferLogger.test(); transfer(Cache( fileSystem: globals.fs, - logger: globals.logger, - osUtils: globals.os, + logger: logger, + osUtils: OperatingSystemUtils( + fileSystem: globals.fs, + logger: logger, + platform: globals.platform, + processManager: globals.processManager, + ), platform: globals.platform, ).getArtifactDirectory('gradle_wrapper'), testFileSystem); transfer(globals.fs.directory(Cache.flutterRoot) @@ -840,11 +847,6 @@ void _testInMemory(String description, Future Function() testMethod) { ], })); - final FlutterProjectFactory flutterProjectFactory = FlutterProjectFactory( - fileSystem: testFileSystem, - logger: globals.logger ?? BufferLogger.test(), - ); - testUsingContext( description, testMethod, @@ -853,11 +855,14 @@ void _testInMemory(String description, Future Function() testMethod) { ProcessManager: () => FakeProcessManager.any(), Cache: () => Cache( logger: globals.logger, - fileSystem: globals.fs, + fileSystem: testFileSystem, osUtils: globals.os, platform: globals.platform, ), - FlutterProjectFactory: () => flutterProjectFactory, + FlutterProjectFactory: () => FlutterProjectFactory( + fileSystem: testFileSystem, + logger: globals.logger ?? BufferLogger.test(), + ), }, ); } diff --git a/packages/flutter_tools/test/general.shard/testbed_test.dart b/packages/flutter_tools/test/general.shard/testbed_test.dart index e4521e09faa..d8e5181f3f3 100644 --- a/packages/flutter_tools/test/general.shard/testbed_test.dart +++ b/packages/flutter_tools/test/general.shard/testbed_test.dart @@ -13,7 +13,7 @@ import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/error_handling_io.dart'; import 'package:flutter_tools/src/base/process.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; import '../src/testbed.dart'; diff --git a/packages/flutter_tools/test/general.shard/web/golden_comparator_process_test.dart b/packages/flutter_tools/test/general.shard/web/golden_comparator_process_test.dart index c5f05c6f1f3..efc85cd5ca9 100644 --- a/packages/flutter_tools/test/general.shard/web/golden_comparator_process_test.dart +++ b/packages/flutter_tools/test/general.shard/web/golden_comparator_process_test.dart @@ -7,7 +7,7 @@ import 'dart:convert'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/test/flutter_web_goldens.dart'; import '../../src/common.dart'; diff --git a/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart b/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart index 8765bd6196c..42a588f178c 100644 --- a/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart +++ b/packages/flutter_tools/test/general.shard/web/golden_comparator_test.dart @@ -9,7 +9,7 @@ import 'dart:typed_data'; import 'package:flutter_tools/src/test/flutter_web_goldens.dart'; import 'package:flutter_tools/src/test/test_compiler.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; diff --git a/packages/flutter_tools/test/general.shard/web/web_expression_compiler_test.dart b/packages/flutter_tools/test/general.shard/web/web_expression_compiler_test.dart index 2b90afff474..eaa8e3d071d 100644 --- a/packages/flutter_tools/test/general.shard/web/web_expression_compiler_test.dart +++ b/packages/flutter_tools/test/general.shard/web/web_expression_compiler_test.dart @@ -9,7 +9,7 @@ import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/isolated/devfs_web.dart'; import 'package:matcher/matcher.dart'; import 'package:mockito/mockito.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/testbed.dart'; diff --git a/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart b/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart index f7caed24316..e1e36ebb557 100644 --- a/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart +++ b/packages/flutter_tools/test/integration.shard/forbidden_imports_test.dart @@ -51,10 +51,11 @@ void main() { .map(_asFile); for (final File file in files) { for (final String line in file.readAsLinesSync()) { - if (line.startsWith(RegExp(r'import.*globals.dart')) - && !line.contains(r'as globals')) { + if ((line.startsWith(RegExp(r'import.*globals.dart')) || + line.startsWith(RegExp(r'import.*globals_null_migrated.dart'))) && + !line.contains(r'as globals')) { final String relativePath = fileSystem.path.relative(file.path, from:flutterTools); - fail('$relativePath imports globals.dart without a globals prefix.'); + fail('$relativePath imports globals_null_migrated.dart or globals.dart without a globals prefix.'); } } } diff --git a/packages/flutter_tools/test/integration.shard/xcode_backend_test.dart b/packages/flutter_tools/test/integration.shard/xcode_backend_test.dart index 3667208a1a8..2bcab887a6f 100644 --- a/packages/flutter_tools/test/integration.shard/xcode_backend_test.dart +++ b/packages/flutter_tools/test/integration.shard/xcode_backend_test.dart @@ -8,7 +8,7 @@ import 'dart:io' as io; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../src/common.dart'; diff --git a/packages/flutter_tools/test/src/android_common.dart b/packages/flutter_tools/test/src/android_common.dart index 18ce01f8c80..d02db4ceb0f 100644 --- a/packages/flutter_tools/test/src/android_common.dart +++ b/packages/flutter_tools/test/src/android_common.dart @@ -6,7 +6,7 @@ import 'package:meta/meta.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/android/android_builder.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/build_info.dart'; diff --git a/packages/flutter_tools/test/src/common.dart b/packages/flutter_tools/test/src/common.dart index e00fecad05f..60f2a1f13da 100644 --- a/packages/flutter_tools/test/src/common.dart +++ b/packages/flutter_tools/test/src/common.dart @@ -21,7 +21,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/doctor.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/runner/flutter_command_runner.dart'; import 'package:flutter_tools/src/vmservice.dart'; diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index 33786f51fb0..a965e84ac4c 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart @@ -31,7 +31,7 @@ import 'package:flutter_tools/src/persistent_tool_state.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/version.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:meta/meta.dart'; import 'package:mockito/mockito.dart'; diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart index 9f29425293c..d7765ff2780 100644 --- a/packages/flutter_tools/test/src/mocks.dart +++ b/packages/flutter_tools/test/src/mocks.dart @@ -12,7 +12,7 @@ import 'package:flutter_tools/src/android/android_sdk.dart' show AndroidSdk; import 'package:flutter_tools/src/base/file_system.dart' hide IOSink; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/build_info.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/ios/devices.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:mockito/mockito.dart'; diff --git a/packages/flutter_tools/test/src/pubspec_schema.dart b/packages/flutter_tools/test/src/pubspec_schema.dart index 54b22dd3963..a54a8afbedc 100644 --- a/packages/flutter_tools/test/src/pubspec_schema.dart +++ b/packages/flutter_tools/test/src/pubspec_schema.dart @@ -6,7 +6,7 @@ import 'package:flutter_tools/src/flutter_manifest.dart'; import 'package:meta/meta.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:yaml/yaml.dart'; import 'common.dart'; diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart index b26336d1d84..6c56ee37384 100644 --- a/packages/flutter_tools/test/src/testbed.dart +++ b/packages/flutter_tools/test/src/testbed.dart @@ -21,7 +21,7 @@ import 'package:flutter_tools/src/context_runner.dart'; import 'package:flutter_tools/src/dart/pub.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/version.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:process/process.dart'; import 'context.dart'; diff --git a/packages/flutter_tools/tool/global_count.dart b/packages/flutter_tools/tool/global_count.dart index 2f6bc7e6ee7..08219a29ae0 100644 --- a/packages/flutter_tools/tool/global_count.dart +++ b/packages/flutter_tools/tool/global_count.dart @@ -5,32 +5,39 @@ import 'dart:io'; import 'package:path/path.dart' as path; -/// Count the number of libraries that import globals.dart in lib and test. +/// Count the number of libraries that import globals_null_migrated.dart and globals.dart in lib and test. /// /// This must be run from the flutter_tools project root directory. void main() { final Directory sources = Directory(path.join(Directory.current.path, 'lib')); final Directory tests = Directory(path.join(Directory.current.path, 'test')); - final int sourceGlobals = countGlobalImports(sources); - final int testGlobals = countGlobalImports(tests); - print('lib/ contains $sourceGlobals libraries with global usage'); - print('test/ contains $testGlobals libraries with global usage'); + countGlobalImports(sources); + countGlobalImports(tests); } -final RegExp globalImport = RegExp('import.*globals.dart\' as globals;'); +final RegExp globalImport = RegExp(r"import.*(?:globals|globals_null_migrated)\.dart' as globals;"); +final RegExp globalNullUnsafeImport = RegExp('import.*globals.dart\' as globals;'); -int countGlobalImports(Directory directory) { +void countGlobalImports(Directory directory) { int count = 0; + int nullUnsafeImportCount = 0; for (final FileSystemEntity file in directory.listSync(recursive: true)) { if (!file.path.endsWith('.dart') || file is! File) { continue; } - final bool hasImport = file.readAsLinesSync().any((String line) { + final List fileLines = file.readAsLinesSync(); + final bool hasImport = fileLines.any((String line) { return globalImport.hasMatch(line); }); if (hasImport) { count += 1; } + final bool hasUnsafeImport = fileLines.any((String line) { + return globalNullUnsafeImport.hasMatch(line); + }); + if (hasUnsafeImport) { + nullUnsafeImportCount += 1; + } } - return count; + print('${path.basename(directory.path)} contains $count libraries with global usage ($nullUnsafeImportCount unsafe)'); }