From 04d3d1a4c3f005beb8cf37fb4f66ad6b7b8d666f Mon Sep 17 00:00:00 2001 From: Polina Cherkasova Date: Tue, 5 Nov 2024 08:49:42 -0800 Subject: [PATCH] Reland1: "Revert "Add and plumb `useImplicitPubspecResolution` across `flutter_tools`."" (#158126) Reverts flutter/flutter#158076 --- .../bin/fuchsia_asset_builder.dart | 2 +- .../flutter_tools/bin/fuchsia_tester.dart | 2 +- .../lib/src/build_system/build_system.dart | 9 +++ .../build_system/targets/localizations.dart | 1 + .../flutter_tools/lib/src/bundle_builder.dart | 2 + .../lib/src/commands/assemble.dart | 2 + .../lib/src/commands/attach.dart | 6 ++ .../lib/src/commands/build_bundle.dart | 2 + .../lib/src/commands/build_ios_framework.dart | 2 + .../src/commands/build_macos_framework.dart | 2 + .../lib/src/commands/build_web.dart | 2 + .../lib/src/commands/create_base.dart | 2 + .../lib/src/commands/custom_devices.dart | 3 +- .../lib/src/commands/daemon.dart | 21 ++++++- .../flutter_tools/lib/src/commands/drive.dart | 2 + .../src/commands/generate_localizations.dart | 2 + .../lib/src/commands/packages.dart | 2 + .../flutter_tools/lib/src/commands/run.dart | 6 ++ .../flutter_tools/lib/src/context_runner.dart | 2 + .../lib/src/custom_devices/custom_device.dart | 12 +++- .../lib/src/drive/drive_service.dart | 6 +- .../lib/src/drive/web_driver_service.dart | 6 +- .../lib/src/flutter_device_manager.dart | 6 +- .../lib/src/isolated/resident_web_runner.dart | 8 +++ .../localizations/localizations_utils.dart | 15 ++++- .../flutter_tools/lib/src/preview_device.dart | 8 +++ .../lib/src/resident_runner.dart | 4 ++ packages/flutter_tools/lib/src/run_cold.dart | 1 + packages/flutter_tools/lib/src/run_hot.dart | 1 + .../lib/src/runner/flutter_command.dart | 1 + .../lib/src/tester/flutter_tester.dart | 8 ++- .../flutter_tools/lib/src/web/compile.dart | 6 +- .../flutter_tools/lib/src/web/web_runner.dart | 1 + .../commands.shard/hermetic/attach_test.dart | 1 + .../commands.shard/hermetic/daemon_test.dart | 33 ++++++++++ .../hermetic/generate_localizations_test.dart | 42 ++++++++++++- .../hermetic/proxied_devices_test.dart | 5 ++ .../commands.shard/hermetic/run_test.dart | 4 +- .../permeable/build_bundle_test.dart | 1 + .../targets/localizations_test.dart | 63 +++++++++++++++++++ .../general.shard/bundle_builder_test.dart | 9 ++- .../test/general.shard/cold_test.dart | 5 ++ .../general.shard/commands/daemon_test.dart | 2 + .../custom_devices/custom_device_test.dart | 48 +++++++++----- .../drive/web_driver_service_test.dart | 2 + .../test/general.shard/hot_test.dart | 10 +++ .../test/general.shard/isolated/hot_test.dart | 2 + .../isolated/resident_runner_test.dart | 1 + .../general.shard/preview_device_test.dart | 9 ++- .../general.shard/resident_runner_test.dart | 32 ++++++++++ .../resident_web_runner_cold_test.dart | 5 ++ .../resident_web_runner_test.dart | 11 ++++ .../tester/flutter_tester_test.dart | 2 + .../general.shard/web/compile_web_test.dart | 2 + packages/flutter_tools/test/src/context.dart | 2 +- packages/flutter_tools/test/src/testbed.dart | 4 +- .../web.shard/web_driver_service_test.dart | 1 + 57 files changed, 409 insertions(+), 42 deletions(-) diff --git a/packages/flutter_tools/bin/fuchsia_asset_builder.dart b/packages/flutter_tools/bin/fuchsia_asset_builder.dart index 803b6ef45b..8f2d840ba0 100644 --- a/packages/flutter_tools/bin/fuchsia_asset_builder.dart +++ b/packages/flutter_tools/bin/fuchsia_asset_builder.dart @@ -34,7 +34,7 @@ const List _kRequiredOptions = [ Future main(List args) { return runInContext(() => run(args), overrides: { Usage: () => DisabledUsage(), - }); + }, useImplicitPubspecResolution: true); } Future writeAssetFile(libfs.File outputFile, AssetBundleEntry asset) async { diff --git a/packages/flutter_tools/bin/fuchsia_tester.dart b/packages/flutter_tools/bin/fuchsia_tester.dart index 00a379e6ec..fd86402f31 100644 --- a/packages/flutter_tools/bin/fuchsia_tester.dart +++ b/packages/flutter_tools/bin/fuchsia_tester.dart @@ -43,7 +43,7 @@ const String _kOptionCoveragePath = 'coverage-path'; void main(List args) { runInContext(() => run(args), overrides: { Usage: () => DisabledUsage(), - }); + }, useImplicitPubspecResolution: true); } Future run(List args) async { diff --git a/packages/flutter_tools/lib/src/build_system/build_system.dart b/packages/flutter_tools/lib/src/build_system/build_system.dart index 0fd777ab22..6a4eac673c 100644 --- a/packages/flutter_tools/lib/src/build_system/build_system.dart +++ b/packages/flutter_tools/lib/src/build_system/build_system.dart @@ -347,6 +347,7 @@ class Environment { required Analytics analytics, String? engineVersion, required bool generateDartPluginRegistry, + required bool useImplicitPubspecResolution, Directory? buildDir, Map defines = const {}, Map inputs = const {}, @@ -391,6 +392,7 @@ class Environment { engineVersion: engineVersion, inputs: inputs, generateDartPluginRegistry: generateDartPluginRegistry, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } @@ -412,6 +414,7 @@ class Environment { Usage? usage, Analytics? analytics, bool generateDartPluginRegistry = false, + bool useImplicitPubspecResolution = true, required FileSystem fileSystem, required Logger logger, required Artifacts artifacts, @@ -435,6 +438,7 @@ class Environment { analytics: analytics ?? const NoOpAnalytics(), engineVersion: engineVersion, generateDartPluginRegistry: generateDartPluginRegistry, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } @@ -457,6 +461,7 @@ class Environment { this.engineVersion, required this.inputs, required this.generateDartPluginRegistry, + required this.useImplicitPubspecResolution, }); /// The [Source] value which is substituted with the path to [projectDir]. @@ -557,6 +562,10 @@ class Environment { /// the new entrypoint. final bool generateDartPluginRegistry; + /// Whether to generate a `.flutter-plugins` file and for Flutter i10n source + /// generation to default to `synthetic-package: true`. + final bool useImplicitPubspecResolution; + late final DepfileService depFileService = DepfileService( logger: logger, fileSystem: fileSystem, diff --git a/packages/flutter_tools/lib/src/build_system/targets/localizations.dart b/packages/flutter_tools/lib/src/build_system/targets/localizations.dart index 01e4792a32..2f5bdda24e 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/localizations.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/localizations.dart @@ -56,6 +56,7 @@ class GenerateLocalizationsTarget extends Target { file: configFile, logger: environment.logger, defaultArbDir: defaultArbDir, + defaultSyntheticPackage: environment.useImplicitPubspecResolution, ); await generateLocalizations( logger: environment.logger, diff --git a/packages/flutter_tools/lib/src/bundle_builder.dart b/packages/flutter_tools/lib/src/bundle_builder.dart index effda740a5..632ddcea6b 100644 --- a/packages/flutter_tools/lib/src/bundle_builder.dart +++ b/packages/flutter_tools/lib/src/bundle_builder.dart @@ -37,6 +37,7 @@ class BundleBuilder { Future build({ required TargetPlatform platform, required BuildInfo buildInfo, + required bool useImplicitPubspecResolution, FlutterProject? project, String? mainPath, String manifestPath = defaultManifestPath, @@ -79,6 +80,7 @@ class BundleBuilder { analytics: globals.analytics, platform: globals.platform, generateDartPluginRegistry: true, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); final Target target = buildInfo.mode == BuildMode.debug ? globals.buildTargets.copyFlutterBundle diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart index 1f2de22656..3fc926f89d 100644 --- a/packages/flutter_tools/lib/src/commands/assemble.dart +++ b/packages/flutter_tools/lib/src/commands/assemble.dart @@ -26,6 +26,7 @@ import '../globals.dart' as globals; import '../project.dart'; import '../reporting/reporting.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; /// All currently implemented targets. List _kDefaultTargets = [ @@ -252,6 +253,7 @@ class AssembleCommand extends FlutterCommand { ? null : globals.flutterVersion.engineRevision, generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); return result; } diff --git a/packages/flutter_tools/lib/src/commands/attach.dart b/packages/flutter_tools/lib/src/commands/attach.dart index a503c82748..b149f72000 100644 --- a/packages/flutter_tools/lib/src/commands/attach.dart +++ b/packages/flutter_tools/lib/src/commands/attach.dart @@ -280,6 +280,7 @@ known, it can be explicitly provided to attach via the command-line, e.g. ? _logger : NotifyingLogger(verbose: _logger.isVerbose, parent: _logger), logToStdout: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ) : null; @@ -466,6 +467,7 @@ known, it can be explicitly provided to attach via the command-line, e.g. printDtd: boolArg(FlutterGlobalOptions.kPrintDtd, global: true), ); + final bool useImplicitPubspecResolution = globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution); return buildInfo.isDebug ? _hotRunnerFactory.build( flutterDevices, @@ -478,11 +480,13 @@ known, it can be explicitly provided to attach via the command-line, e.g. nativeAssetsYamlFile: stringArg(FlutterOptions.kNativeAssetsYamlFile), nativeAssetsBuilder: _nativeAssetsBuilder, analytics: analytics, + useImplicitPubspecResolution: useImplicitPubspecResolution, ) : ColdRunner( flutterDevices, target: targetFile, debuggingOptions: debuggingOptions, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } @@ -509,6 +513,7 @@ class HotRunnerFactory { FlutterProject? flutterProject, String? nativeAssetsYamlFile, required HotRunnerNativeAssetsBuilder? nativeAssetsBuilder, + required bool useImplicitPubspecResolution, required Analytics analytics, }) => HotRunner( devices, @@ -523,5 +528,6 @@ class HotRunnerFactory { nativeAssetsYamlFile: nativeAssetsYamlFile, nativeAssetsBuilder: nativeAssetsBuilder, analytics: analytics, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } diff --git a/packages/flutter_tools/lib/src/commands/build_bundle.dart b/packages/flutter_tools/lib/src/commands/build_bundle.dart index 82470cf607..fbfa1f49a1 100644 --- a/packages/flutter_tools/lib/src/commands/build_bundle.dart +++ b/packages/flutter_tools/lib/src/commands/build_bundle.dart @@ -13,6 +13,7 @@ import '../globals.dart' as globals; import '../project.dart'; import '../reporting/reporting.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; import 'build.dart'; class BuildBundleCommand extends BuildSubCommand { @@ -149,6 +150,7 @@ class BuildBundleCommand extends BuildSubCommand { depfilePath: stringArg('depfile'), assetDirPath: stringArg('asset-dir'), buildNativeAssets: false, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); return FlutterCommandResult.success(); } diff --git a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart index fc424ca9e1..3398ba78aa 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart @@ -21,6 +21,7 @@ import '../flutter_plugins.dart'; import '../globals.dart' as globals; import '../macos/cocoapod_utils.dart'; import '../runner/flutter_command.dart' show DevelopmentArtifact, FlutterCommandResult; +import '../runner/flutter_command_runner.dart'; import '../version.dart'; import 'build.dart'; @@ -460,6 +461,7 @@ end ? null : globals.flutterVersion.engineRevision, generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); Target target; // Always build debug for simulator. diff --git a/packages/flutter_tools/lib/src/commands/build_macos_framework.dart b/packages/flutter_tools/lib/src/commands/build_macos_framework.dart index 7794b72860..5a8c61f31d 100644 --- a/packages/flutter_tools/lib/src/commands/build_macos_framework.dart +++ b/packages/flutter_tools/lib/src/commands/build_macos_framework.dart @@ -19,6 +19,7 @@ import '../flutter_plugins.dart'; import '../globals.dart' as globals; import '../macos/cocoapod_utils.dart'; import '../runner/flutter_command.dart' show DevelopmentArtifact, FlutterCommandResult; +import '../runner/flutter_command_runner.dart'; import '../version.dart'; import 'build_ios_framework.dart'; @@ -239,6 +240,7 @@ end analytics: globals.analytics, engineVersion: globals.artifacts!.usesLocalArtifacts ? null : globals.flutterVersion.engineRevision, generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); Target target; // Always build debug for simulator. diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart index f0c2e4e2cc..d189c1bbb4 100644 --- a/packages/flutter_tools/lib/src/commands/build_web.dart +++ b/packages/flutter_tools/lib/src/commands/build_web.dart @@ -10,6 +10,7 @@ import '../features.dart'; import '../globals.dart' as globals; import '../runner/flutter_command.dart' show DevelopmentArtifact, FlutterCommandResult, FlutterOptions; +import '../runner/flutter_command_runner.dart'; import '../web/compile.dart'; import '../web/file_generators/flutter_service_worker_js.dart'; import '../web/web_constants.dart'; @@ -226,6 +227,7 @@ class BuildWebCommand extends BuildSubCommand { flutterVersion: globals.flutterVersion, usage: globals.flutterUsage, analytics: globals.analytics, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); await webBuilder.buildWeb( project, diff --git a/packages/flutter_tools/lib/src/commands/create_base.dart b/packages/flutter_tools/lib/src/commands/create_base.dart index 76ff09a32b..4cde6ffacc 100644 --- a/packages/flutter_tools/lib/src/commands/create_base.dart +++ b/packages/flutter_tools/lib/src/commands/create_base.dart @@ -21,6 +21,7 @@ import '../flutter_project_metadata.dart'; import '../globals.dart' as globals; import '../project.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; import '../template.dart'; const List _kAvailablePlatforms = [ @@ -574,6 +575,7 @@ abstract class CreateBase extends FlutterCommand { projectDir: project.directory, packageConfigPath: packageConfigPath(), generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); // Generate the l10n synthetic package that will be injected into the diff --git a/packages/flutter_tools/lib/src/commands/custom_devices.dart b/packages/flutter_tools/lib/src/commands/custom_devices.dart index 3f07e7ff73..2079881a6c 100644 --- a/packages/flutter_tools/lib/src/commands/custom_devices.dart +++ b/packages/flutter_tools/lib/src/commands/custom_devices.dart @@ -377,7 +377,8 @@ class CustomDevicesAddCommand extends CustomDevicesCommandBase { final CustomDevice device = CustomDevice( config: config, logger: logger, - processManager: _processManager + processManager: _processManager, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); bool result = true; diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 6749b988fe..88e8644dea 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -32,6 +32,7 @@ import '../resident_runner.dart'; import '../run_cold.dart'; import '../run_hot.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; import '../vmservice.dart'; import '../web/web_runner.dart'; @@ -66,6 +67,7 @@ class DaemonCommand extends FlutterCommand { @override Future runCommand() async { + final bool useImplicitPubspecResolution = globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution); if (argResults!['listen-on-tcp-port'] != null) { int? port; try { @@ -82,6 +84,7 @@ class DaemonCommand extends FlutterCommand { outputPreferences: globals.outputPreferences, ), notifyingLogger: asLogger(globals.logger), + useImplicitPubspecResolution: useImplicitPubspecResolution, ).run(); return FlutterCommandResult.success(); } @@ -92,6 +95,7 @@ class DaemonCommand extends FlutterCommand { logger: globals.logger, ), notifyingLogger: asLogger(globals.logger), + useImplicitPubspecResolution: useImplicitPubspecResolution, ); final int code = await daemon.onExit; if (code != 0) { @@ -105,10 +109,11 @@ class DaemonCommand extends FlutterCommand { class DaemonServer { DaemonServer({ this.port, + required bool useImplicitPubspecResolution, required this.logger, this.notifyingLogger, @visibleForTesting Future Function(InternetAddress address, int port) bind = ServerSocket.bind, - }) : _bind = bind; + }) : _bind = bind, _useImplicitPubspecResolution = useImplicitPubspecResolution; final int? port; @@ -117,6 +122,7 @@ class DaemonServer { // Logger that sends the message to the other end of daemon connection. final NotifyingLogger? notifyingLogger; + final bool _useImplicitPubspecResolution; final Future Function(InternetAddress address, int port) _bind; @@ -151,6 +157,7 @@ class DaemonServer { logger: logger, ), notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); await daemon.onExit; await socketDone; @@ -169,13 +176,14 @@ typedef CommandHandlerWithBinary = Future Function(Map class Daemon { Daemon( this.connection, { + required bool useImplicitPubspecResolution, this.notifyingLogger, this.logToStdout = false, FileTransfer fileTransfer = const FileTransfer(), }) { // Set up domains. registerDomain(daemonDomain = DaemonDomain(this)); - registerDomain(appDomain = AppDomain(this)); + registerDomain(appDomain = AppDomain(this, useImplicitPubspecResolution: useImplicitPubspecResolution)); registerDomain(deviceDomain = DeviceDomain(this)); registerDomain(emulatorDomain = EmulatorDomain(this)); registerDomain(devToolsDomain = DevToolsDomain(this)); @@ -637,7 +645,10 @@ typedef RunOrAttach = Future Function({ /// /// It fires events for application start, stop, and stdout and stderr. class AppDomain extends Domain { - AppDomain(Daemon daemon) : super(daemon, 'app') { + AppDomain(Daemon daemon, { + required bool useImplicitPubspecResolution, + }) : _useImplicitPubspecResolution = useImplicitPubspecResolution, + super(daemon, 'app') { registerHandler('restart', restart); registerHandler('callServiceExtension', callServiceExtension); registerHandler('stop', stop); @@ -649,6 +660,7 @@ class AppDomain extends Domain { static String _getNewAppId() => _uuidGenerator.v4(); final List _apps = []; + final bool _useImplicitPubspecResolution; final DebounceOperationQueue operationQueue = DebounceOperationQueue(); @@ -705,6 +717,7 @@ class AppDomain extends Domain { systemClock: globals.systemClock, logger: globals.logger, fileSystem: globals.fs, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); } else if (enableHotReload) { runner = HotRunner( @@ -718,6 +731,7 @@ class AppDomain extends Domain { machine: machine, analytics: globals.analytics, nativeAssetsBuilder: nativeAssetsBuilder, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); } else { runner = ColdRunner( @@ -726,6 +740,7 @@ class AppDomain extends Domain { debuggingOptions: options, applicationBinary: applicationBinary, machine: machine, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); } diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart index 4921ccc428..85ce947c6d 100644 --- a/packages/flutter_tools/lib/src/commands/drive.dart +++ b/packages/flutter_tools/lib/src/commands/drive.dart @@ -28,6 +28,7 @@ import '../ios/devices.dart'; import '../macos/macos_ipad_device.dart'; import '../resident_runner.dart'; import '../runner/flutter_command.dart' show FlutterCommandCategory, FlutterCommandResult, FlutterOptions; +import '../runner/flutter_command_runner.dart'; import '../web/web_device.dart'; import 'run.dart'; @@ -260,6 +261,7 @@ class DriveCommand extends RunCommandBase { processUtils: globals.processUtils, dartSdkPath: globals.artifacts!.getArtifactPath(Artifact.engineDartBinary), devtoolsLauncher: DevtoolsLauncher.instance!, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); final File packageConfigFile = findPackageConfigFileOrDefault(_fileSystem.currentDirectory); diff --git a/packages/flutter_tools/lib/src/commands/generate_localizations.dart b/packages/flutter_tools/lib/src/commands/generate_localizations.dart index dc652bb9d8..2a62dfccf3 100644 --- a/packages/flutter_tools/lib/src/commands/generate_localizations.dart +++ b/packages/flutter_tools/lib/src/commands/generate_localizations.dart @@ -11,6 +11,7 @@ import '../base/logger.dart'; import '../localizations/gen_l10n.dart'; import '../localizations/localizations_utils.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; /// A command to generate localizations source files for a Flutter project. /// @@ -246,6 +247,7 @@ class GenerateLocalizationsCommand extends FlutterCommand { file: _fileSystem.file('l10n.yaml'), logger: _logger, defaultArbDir: defaultArbDir, + defaultSyntheticPackage: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); _logger.printStatus( 'Because l10n.yaml exists, the options defined there will be used ' diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart index 0562e80f23..6c1b24f01b 100644 --- a/packages/flutter_tools/lib/src/commands/packages.dart +++ b/packages/flutter_tools/lib/src/commands/packages.dart @@ -305,6 +305,7 @@ class PackagesGetCommand extends FlutterCommand { projectDir: rootProject.directory, packageConfigPath: packageConfigPath(), generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); await generateLocalizationsSyntheticPackage( @@ -328,6 +329,7 @@ class PackagesGetCommand extends FlutterCommand { projectDir: rootProject.directory, packageConfigPath: packageConfigPath(), generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); final BuildResult result = await globals.buildSystem.build( const GenerateLocalizationsTarget(), diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 2548b68b01..10fbe0914e 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -682,6 +682,7 @@ class RunCommand extends RunCommandBase { required String? applicationBinaryPath, required FlutterProject flutterProject, }) async { + final bool useImplicitPubspecResolution = globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution); if (hotMode && !webMode) { return HotRunner( flutterDevices, @@ -697,6 +698,7 @@ class RunCommand extends RunCommandBase { analytics: globals.analytics, nativeAssetsYamlFile: stringArg(FlutterOptions.kNativeAssetsYamlFile), nativeAssetsBuilder: _nativeAssetsBuilder, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } else if (webMode) { return webRunnerFactory!.createWebRunner( @@ -710,6 +712,7 @@ class RunCommand extends RunCommandBase { analytics: globals.analytics, logger: globals.logger, systemClock: globals.systemClock, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } return ColdRunner( @@ -722,11 +725,13 @@ class RunCommand extends RunCommandBase { ? null : globals.fs.file(applicationBinaryPath), stayResident: stayResident, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } @visibleForTesting Daemon createMachineDaemon() { + final bool useImplicitPubspecResolution = globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution); final Daemon daemon = Daemon( DaemonConnection( daemonStreams: DaemonStreams.fromStdio(globals.stdio, logger: globals.logger), @@ -736,6 +741,7 @@ class RunCommand extends RunCommandBase { ? globals.logger as NotifyingLogger : NotifyingLogger(verbose: globals.logger.isVerbose, parent: globals.logger), logToStdout: true, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); return daemon; } diff --git a/packages/flutter_tools/lib/src/context_runner.dart b/packages/flutter_tools/lib/src/context_runner.dart index be267ece64..7c73f2ab5d 100644 --- a/packages/flutter_tools/lib/src/context_runner.dart +++ b/packages/flutter_tools/lib/src/context_runner.dart @@ -68,6 +68,7 @@ import 'windows/windows_workflow.dart'; Future runInContext( FutureOr Function() runner, { + bool useImplicitPubspecResolution = true, Map? overrides, }) async { @@ -210,6 +211,7 @@ Future runInContext( operatingSystemUtils: globals.os, customDevicesConfig: globals.customDevicesConfig, nativeAssetsBuilder: globals.nativeAssetsBuilder, + useImplicitPubspecResolution: useImplicitPubspecResolution, ), DevtoolsLauncher: () => DevtoolsServerLauncher( processManager: globals.processManager, diff --git a/packages/flutter_tools/lib/src/custom_devices/custom_device.dart b/packages/flutter_tools/lib/src/custom_devices/custom_device.dart index 6ed6fbdc30..a6ba195245 100644 --- a/packages/flutter_tools/lib/src/custom_devices/custom_device.dart +++ b/packages/flutter_tools/lib/src/custom_devices/custom_device.dart @@ -440,8 +440,10 @@ class CustomDevice extends Device { required CustomDeviceConfig config, required super.logger, required ProcessManager processManager, + required bool useImplicitPubspecResolution, }) : _config = config, _logger = logger, + _useImplicitPubspecResolution = useImplicitPubspecResolution, _processManager = processManager, _processUtils = ProcessUtils( processManager: processManager, @@ -469,6 +471,7 @@ class CustomDevice extends Device { final ProcessUtils _processUtils; final Map _sessions = {}; final CustomDeviceLogReader _globalLogReader; + final bool _useImplicitPubspecResolution; @override final DevicePortForwarder portForwarder; @@ -762,6 +765,7 @@ class CustomDevice extends Device { mainPath: mainPath, depfilePath: defaultDepfilePath, assetDirPath: assetBundleDir, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); // if we have a post build step (needed for some embedders), execute it @@ -822,15 +826,18 @@ class CustomDevices extends PollingDeviceDiscovery { required FeatureFlags featureFlags, required ProcessManager processManager, required Logger logger, - required CustomDevicesConfig config + required CustomDevicesConfig config, + required bool useImplicitPubspecResolution, }) : _customDeviceWorkflow = CustomDeviceWorkflow( featureFlags: featureFlags, ), + _useImplicitPubspecResolution = useImplicitPubspecResolution, _logger = logger, _processManager = processManager, _config = config, super('custom devices'); + final bool _useImplicitPubspecResolution; final CustomDeviceWorkflow _customDeviceWorkflow; final ProcessManager _processManager; final Logger _logger; @@ -851,7 +858,8 @@ class CustomDevices extends PollingDeviceDiscovery { (CustomDeviceConfig config) => CustomDevice( config: config, logger: _logger, - processManager: _processManager + processManager: _processManager, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ) ).toList(); } diff --git a/packages/flutter_tools/lib/src/drive/drive_service.dart b/packages/flutter_tools/lib/src/drive/drive_service.dart index bf6ccb6f01..b260a03107 100644 --- a/packages/flutter_tools/lib/src/drive/drive_service.dart +++ b/packages/flutter_tools/lib/src/drive/drive_service.dart @@ -28,17 +28,20 @@ class FlutterDriverFactory { required ProcessUtils processUtils, required String dartSdkPath, required DevtoolsLauncher devtoolsLauncher, + required bool useImplicitPubspecResolution, }) : _applicationPackageFactory = applicationPackageFactory, _logger = logger, _processUtils = processUtils, _dartSdkPath = dartSdkPath, - _devtoolsLauncher = devtoolsLauncher; + _devtoolsLauncher = devtoolsLauncher, + _useImplicitPubspecResolution = useImplicitPubspecResolution; final ApplicationPackageFactory _applicationPackageFactory; final Logger _logger; final ProcessUtils _processUtils; final String _dartSdkPath; final DevtoolsLauncher _devtoolsLauncher; + final bool _useImplicitPubspecResolution; /// Create a driver service for running `flutter drive`. DriverService createDriverService(bool web) { @@ -47,6 +50,7 @@ class FlutterDriverFactory { logger: _logger, processUtils: _processUtils, dartSdkPath: _dartSdkPath, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); } return FlutterDriverService( diff --git a/packages/flutter_tools/lib/src/drive/web_driver_service.dart b/packages/flutter_tools/lib/src/drive/web_driver_service.dart index 8958a4150b..d95581be4f 100644 --- a/packages/flutter_tools/lib/src/drive/web_driver_service.dart +++ b/packages/flutter_tools/lib/src/drive/web_driver_service.dart @@ -30,13 +30,16 @@ class WebDriverService extends DriverService { required ProcessUtils processUtils, required String dartSdkPath, required Logger logger, + required bool useImplicitPubspecResolution, }) : _processUtils = processUtils, _dartSdkPath = dartSdkPath, - _logger = logger; + _logger = logger, + _useImplicitPubspecResolution = useImplicitPubspecResolution; final ProcessUtils _processUtils; final String _dartSdkPath; final Logger _logger; + final bool _useImplicitPubspecResolution; late ResidentRunner _residentRunner; Uri? _webUri; @@ -94,6 +97,7 @@ class WebDriverService extends DriverService { analytics: globals.analytics, logger: _logger, systemClock: globals.systemClock, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); final Completer appStartedCompleter = Completer.sync(); final Future runFuture = _residentRunner.run( diff --git a/packages/flutter_tools/lib/src/flutter_device_manager.dart b/packages/flutter_tools/lib/src/flutter_device_manager.dart index 9e3e3595b7..a0d3372570 100644 --- a/packages/flutter_tools/lib/src/flutter_device_manager.dart +++ b/packages/flutter_tools/lib/src/flutter_device_manager.dart @@ -53,6 +53,7 @@ class FlutterDeviceManager extends DeviceManager { required WindowsWorkflow windowsWorkflow, required CustomDevicesConfig customDevicesConfig, required TestCompilerNativeAssetsBuilder? nativeAssetsBuilder, + required bool useImplicitPubspecResolution, }) : deviceDiscoverers = [ AndroidDevices( logger: logger, @@ -79,6 +80,7 @@ class FlutterDeviceManager extends DeviceManager { logger: logger, artifacts: artifacts, nativeAssetsBuilder: nativeAssetsBuilder, + useImplicitPubspecResolution: useImplicitPubspecResolution, ), MacOSDevices( processManager: processManager, @@ -103,6 +105,7 @@ class FlutterDeviceManager extends DeviceManager { logger: logger, processManager: processManager, featureFlags: featureFlags, + useImplicitPubspecResolution: useImplicitPubspecResolution, ), LinuxDevices( platform: platform, @@ -130,7 +133,8 @@ class FlutterDeviceManager extends DeviceManager { featureFlags: featureFlags, processManager: processManager, logger: logger, - config: customDevicesConfig + config: customDevicesConfig, + useImplicitPubspecResolution: useImplicitPubspecResolution, ), ]; diff --git a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart index ad5a5f2354..40473a060d 100644 --- a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart +++ b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart @@ -57,6 +57,7 @@ class DwdsWebRunnerFactory extends WebRunnerFactory { required SystemClock systemClock, required Usage usage, required Analytics analytics, + required bool useImplicitPubspecResolution, bool machine = false, }) { return ResidentWebRunner( @@ -72,6 +73,7 @@ class DwdsWebRunnerFactory extends WebRunnerFactory { systemClock: systemClock, fileSystem: fileSystem, logger: logger, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); } } @@ -87,6 +89,7 @@ class ResidentWebRunner extends ResidentRunner { bool stayResident = true, bool machine = false, required this.flutterProject, + required bool useImplicitPubspecResolution, required DebuggingOptions debuggingOptions, required FileSystem fileSystem, required Logger logger, @@ -102,6 +105,7 @@ class ResidentWebRunner extends ResidentRunner { _usage = usage, _analytics = analytics, _urlTunneller = urlTunneller, + _useImplicitPubspecResolution = useImplicitPubspecResolution, super( [device], target: target ?? fileSystem.path.join('lib', 'main.dart'), @@ -109,6 +113,7 @@ class ResidentWebRunner extends ResidentRunner { stayResident: stayResident, machine: machine, devtoolsHandler: devtoolsHandler, + useImplicitPubspecResolution: useImplicitPubspecResolution, ); final FileSystem _fileSystem; @@ -117,6 +122,7 @@ class ResidentWebRunner extends ResidentRunner { final Usage _usage; final Analytics _analytics; final UrlTunneller? _urlTunneller; + final bool _useImplicitPubspecResolution; @override Logger get logger => _logger; @@ -345,6 +351,7 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive). flutterVersion: globals.flutterVersion, usage: globals.flutterUsage, analytics: globals.analytics, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); await webBuilder.buildWeb( flutterProject, @@ -441,6 +448,7 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive). flutterVersion: globals.flutterVersion, usage: globals.flutterUsage, analytics: globals.analytics, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); await webBuilder.buildWeb( flutterProject, diff --git a/packages/flutter_tools/lib/src/localizations/localizations_utils.dart b/packages/flutter_tools/lib/src/localizations/localizations_utils.dart index 0715cdd2f1..d43645f640 100644 --- a/packages/flutter_tools/lib/src/localizations/localizations_utils.dart +++ b/packages/flutter_tools/lib/src/localizations/localizations_utils.dart @@ -9,6 +9,7 @@ import '../base/common.dart'; import '../base/file_system.dart'; import '../base/logger.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; import 'gen_l10n_types.dart'; import 'language_subtag_registry.dart'; @@ -471,6 +472,7 @@ LocalizationOptions parseLocalizationsOptionsFromYAML({ required File file, required Logger logger, required String defaultArbDir, + required bool defaultSyntheticPackage, }) { final String contents = file.readAsStringSync(); if (contents.trim().isEmpty) { @@ -497,7 +499,7 @@ LocalizationOptions parseLocalizationsOptionsFromYAML({ headerFile: _tryReadUri(yamlNode, 'header-file', logger)?.path, useDeferredLoading: _tryReadBool(yamlNode, 'use-deferred-loading', logger), preferredSupportedLocales: _tryReadStringList(yamlNode, 'preferred-supported-locales', logger), - syntheticPackage: _tryReadBool(yamlNode, 'synthetic-package', logger), + syntheticPackage: _tryReadBool(yamlNode, 'synthetic-package', logger) ?? defaultSyntheticPackage, requiredResourceAttributes: _tryReadBool(yamlNode, 'required-resource-attributes', logger), nullableGetter: _tryReadBool(yamlNode, 'nullable-getter', logger), format: _tryReadBool(yamlNode, 'format', logger), @@ -513,6 +515,15 @@ LocalizationOptions parseLocalizationsOptionsFromCommand({ required FlutterCommand command, required String defaultArbDir, }) { + // TODO(matanlurey): Remove as part of https://github.com/flutter/flutter/issues/102983. + final bool syntheticPackage; + if (command.argResults!.wasParsed('synthetic-package')) { + // If provided explicitly, use the explicit value. + syntheticPackage = command.boolArg('synthetic-package'); + } else { + // Otherwise, inherit from whatever the default of --implicit-pubspec-resolution is. + syntheticPackage = command.globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution); + } return LocalizationOptions( arbDir: command.stringArg('arb-dir') ?? defaultArbDir, outputDir: command.stringArg('output-dir'), @@ -524,7 +535,7 @@ LocalizationOptions parseLocalizationsOptionsFromCommand({ headerFile: command.stringArg('header-file'), useDeferredLoading: command.boolArg('use-deferred-loading'), genInputsAndOutputsList: command.stringArg('gen-inputs-and-outputs-list'), - syntheticPackage: command.boolArg('synthetic-package'), + syntheticPackage: syntheticPackage, projectDir: command.stringArg('project-dir'), requiredResourceAttributes: command.boolArg('required-resource-attributes'), nullableGetter: command.boolArg('nullable-getter'), diff --git a/packages/flutter_tools/lib/src/preview_device.dart b/packages/flutter_tools/lib/src/preview_device.dart index 2577a29e60..71e71122da 100644 --- a/packages/flutter_tools/lib/src/preview_device.dart +++ b/packages/flutter_tools/lib/src/preview_device.dart @@ -37,12 +37,14 @@ class PreviewDeviceDiscovery extends PollingDeviceDiscovery { required Logger logger, required ProcessManager processManager, required FeatureFlags featureFlags, + required bool useImplicitPubspecResolution, }) : _artifacts = artifacts, _logger = logger, _processManager = processManager, _fileSystem = fileSystem, _platform = platform, _features = featureFlags, + _useImplicitPubspecResolution = useImplicitPubspecResolution, super('Flutter preview device'); final Platform _platform; @@ -51,6 +53,7 @@ class PreviewDeviceDiscovery extends PollingDeviceDiscovery { final ProcessManager _processManager; final FileSystem _fileSystem; final FeatureFlags _features; + final bool _useImplicitPubspecResolution; @override bool get canListAnything => _platform.isWindows; @@ -75,6 +78,7 @@ class PreviewDeviceDiscovery extends PollingDeviceDiscovery { logger: _logger, processManager: _processManager, previewBinary: previewBinary, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); return [ if (_features.isPreviewDeviceEnabled) @@ -99,6 +103,7 @@ class PreviewDevice extends Device { required FileSystem fileSystem, required Artifacts artifacts, required File previewBinary, + required bool useImplicitPubspecResolution, @visibleForTesting BundleBuilderFactory builderFactory = _defaultBundleBuilder, }) : _previewBinary = previewBinary, _processManager = processManager, @@ -106,6 +111,7 @@ class PreviewDevice extends Device { _fileSystem = fileSystem, _bundleBuilderFactory = builderFactory, _artifacts = artifacts, + _useImplicitPubspecResolution = useImplicitPubspecResolution, super('preview', ephemeral: false, category: Category.desktop, platformType: PlatformType.windowsPreview); final ProcessManager _processManager; @@ -114,6 +120,7 @@ class PreviewDevice extends Device { final BundleBuilderFactory _bundleBuilderFactory; final Artifacts _artifacts; final File _previewBinary; + final bool _useImplicitPubspecResolution; /// The set of plugins that are allowed to be used by Preview users. /// @@ -184,6 +191,7 @@ class PreviewDevice extends Device { mainPath: mainPath, platform: TargetPlatform.windows_x64, assetDirPath: getAssetBuildDirectory(), + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); copyDirectory(_fileSystem.directory( getAssetBuildDirectory()), diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index af8aabbea5..b88ba4b166 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -1053,6 +1053,7 @@ abstract class ResidentRunner extends ResidentHandlers { this.flutterDevices, { required this.target, required this.debuggingOptions, + required bool useImplicitPubspecResolution, String? projectRootPath, this.stayResident = true, this.hotMode = true, @@ -1063,6 +1064,7 @@ abstract class ResidentRunner extends ResidentHandlers { packagesFilePath = debuggingOptions.buildInfo.packageConfigPath, projectRootPath = projectRootPath ?? globals.fs.currentDirectory.path, _dillOutputPath = dillOutputPath, + _useImplicitPubspecResolution = useImplicitPubspecResolution, artifactDirectory = dillOutputPath == null ? globals.fs.systemTempDirectory.createTempSync('flutter_tool.') : globals.fs.file(dillOutputPath).parent, @@ -1095,6 +1097,7 @@ abstract class ResidentRunner extends ResidentHandlers { @override final bool stayResident; final String? _dillOutputPath; + final bool _useImplicitPubspecResolution; /// The parent location of the incremental artifacts. final Directory artifactDirectory; final String packagesFilePath; @@ -1221,6 +1224,7 @@ abstract class ResidentRunner extends ResidentHandlers { // Needed for Dart plugin registry generation. kTargetFile: mainPath, }, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); final CompositeTarget compositeTarget = CompositeTarget([ diff --git a/packages/flutter_tools/lib/src/run_cold.dart b/packages/flutter_tools/lib/src/run_cold.dart index 55e699cdc1..b07ee54dbb 100644 --- a/packages/flutter_tools/lib/src/run_cold.dart +++ b/packages/flutter_tools/lib/src/run_cold.dart @@ -18,6 +18,7 @@ class ColdRunner extends ResidentRunner { super.flutterDevices, { required super.target, required super.debuggingOptions, + required super.useImplicitPubspecResolution, this.traceStartup = false, this.awaitFirstFrameWhenTracing = true, this.applicationBinary, diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index 80b414ece2..79634f75ca 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -79,6 +79,7 @@ class HotRunner extends ResidentRunner { super.flutterDevices, { required super.target, required super.debuggingOptions, + required super.useImplicitPubspecResolution, this.benchmarkMode = false, this.applicationBinary, this.hostIsIde = false, diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index 08892e9f92..1f54d64fb8 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -1770,6 +1770,7 @@ Run 'flutter -h' (or 'flutter -h') for available flutter commands and projectDir: project.directory, packageConfigPath: packageConfigPath(), generateDartPluginRegistry: true, + useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution), ); await pub.get( diff --git a/packages/flutter_tools/lib/src/tester/flutter_tester.dart b/packages/flutter_tools/lib/src/tester/flutter_tester.dart index e9da38340c..1ee57e3251 100644 --- a/packages/flutter_tools/lib/src/tester/flutter_tester.dart +++ b/packages/flutter_tools/lib/src/tester/flutter_tester.dart @@ -51,6 +51,7 @@ class FlutterTesterDevice extends Device { required super.logger, required FileSystem fileSystem, required Artifacts artifacts, + required bool useImplicitPubspecResolution, TestCompilerNativeAssetsBuilder? nativeAssetsBuilder, }) : _processManager = processManager, _flutterVersion = flutterVersion, @@ -58,6 +59,7 @@ class FlutterTesterDevice extends Device { _fileSystem = fileSystem, _artifacts = artifacts, _nativeAssetsBuilder = nativeAssetsBuilder, + _useImplicitPubspecResolution = useImplicitPubspecResolution, super( platformType: null, category: null, @@ -70,6 +72,7 @@ class FlutterTesterDevice extends Device { final FileSystem _fileSystem; final Artifacts _artifacts; final TestCompilerNativeAssetsBuilder? _nativeAssetsBuilder; + final bool _useImplicitPubspecResolution; Process? _process; final DevicePortForwarder _portForwarder = const NoOpDevicePortForwarder(); @@ -164,6 +167,7 @@ class FlutterTesterDevice extends Device { applicationKernelFilePath: applicationKernelFilePath, platform: TargetPlatform.tester, assetDirPath: assetDirectory.path, + useImplicitPubspecResolution: _useImplicitPubspecResolution, ); final List command = [ @@ -265,9 +269,8 @@ class FlutterTesterDevices extends PollingDeviceDiscovery { required ProcessManager processManager, required Logger logger, required FlutterVersion flutterVersion, + required bool useImplicitPubspecResolution, TestCompilerNativeAssetsBuilder? nativeAssetsBuilder, - // ignore: avoid_unused_constructor_parameters, temporarily unused to prepare G3. - bool useImplicitPubspecResolution = true, }) : _testerDevice = FlutterTesterDevice( kTesterDeviceId, fileSystem: fileSystem, @@ -276,6 +279,7 @@ class FlutterTesterDevices extends PollingDeviceDiscovery { logger: logger, flutterVersion: flutterVersion, nativeAssetsBuilder: nativeAssetsBuilder, + useImplicitPubspecResolution: useImplicitPubspecResolution, ), super('Flutter tester'); diff --git a/packages/flutter_tools/lib/src/web/compile.dart b/packages/flutter_tools/lib/src/web/compile.dart index 973ed7b9bb..336349f616 100644 --- a/packages/flutter_tools/lib/src/web/compile.dart +++ b/packages/flutter_tools/lib/src/web/compile.dart @@ -46,13 +46,15 @@ class WebBuilder { required Analytics analytics, required FlutterVersion flutterVersion, required FileSystem fileSystem, + required bool useImplicitPubspecResolution, }) : _logger = logger, _processManager = processManager, _buildSystem = buildSystem, _flutterUsage = usage, _analytics = analytics, _flutterVersion = flutterVersion, - _fileSystem = fileSystem; + _fileSystem = fileSystem, + _useImplicitPubspecResolution = useImplicitPubspecResolution; final Logger _logger; final ProcessManager _processManager; @@ -61,6 +63,7 @@ class WebBuilder { final Analytics _analytics; final FlutterVersion _flutterVersion; final FileSystem _fileSystem; + final bool _useImplicitPubspecResolution; Future buildWeb( FlutterProject flutterProject, @@ -116,6 +119,7 @@ class WebBuilder { // Web uses a different Dart plugin registry. // https://github.com/flutter/flutter/issues/80406 generateDartPluginRegistry: false, + useImplicitPubspecResolution: _useImplicitPubspecResolution, )); if (!result.success) { for (final ExceptionMeasurement measurement in result.exceptions.values) { diff --git a/packages/flutter_tools/lib/src/web/web_runner.dart b/packages/flutter_tools/lib/src/web/web_runner.dart index af7424a3b7..6cf020bd84 100644 --- a/packages/flutter_tools/lib/src/web/web_runner.dart +++ b/packages/flutter_tools/lib/src/web/web_runner.dart @@ -33,6 +33,7 @@ abstract class WebRunnerFactory { required SystemClock systemClock, required Usage usage, required Analytics analytics, + required bool useImplicitPubspecResolution, bool machine = false, }); } 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 7c3ec69fda..47a2d14cdb 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart @@ -1260,6 +1260,7 @@ class FakeHotRunnerFactory extends Fake implements HotRunnerFactory { Analytics? analytics, String? nativeAssetsYamlFile, HotRunnerNativeAssetsBuilder? nativeAssetsBuilder, + required bool useImplicitPubspecResolution, }) { if (_artifactTester != null) { for (final FlutterDevice device in devices) { 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 4e62f13b90..11922609f5 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/daemon_test.dart @@ -99,6 +99,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'daemon.version'})); final DaemonMessage response = await daemonStreams.outputs.stream.firstWhere(_notEvent); @@ -111,6 +112,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); // Use the flutter_gallery project which has a known set of supported platforms. final String projectPath = globals.fs.path.join(getFlutterRoot(), 'dev', 'integration_tests', 'flutter_gallery'); @@ -215,6 +217,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); globals.printError('daemon.logMessage test'); final DaemonMessage response = await daemonStreams.outputs.stream.firstWhere((DaemonMessage message) { @@ -233,6 +236,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); globals.printWarning('daemon.logMessage test'); final DaemonMessage response = await daemonStreams.outputs.stream.firstWhere((DaemonMessage message) { @@ -253,6 +257,7 @@ void main() { daemonConnection, notifyingLogger: notifyingLogger, logToStdout: true, + useImplicitPubspecResolution: true, ); globals.printStatus('daemon.logMessage test'); return Future.value(); @@ -269,6 +274,7 @@ void main() { daemonConnection, notifyingLogger: notifyingLogger, logToStdout: true, + useImplicitPubspecResolution: true, ); globals.printBox('This is the box message', title: 'Sample title'); return Future.value(); @@ -283,6 +289,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); notifyingLogger.notifyVerbose = false; globals.printTrace('daemon.logMessage test 1'); @@ -304,6 +311,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); expect(notifyingLogger.notifyVerbose, false); @@ -322,6 +330,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); notifyingLogger.notifyVerbose = false; @@ -340,6 +349,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'daemon.shutdown'})); return daemon.onExit.then((int code) async { @@ -352,6 +362,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'app.restart'})); @@ -364,6 +375,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({ @@ -382,6 +394,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'app.stop'})); @@ -394,6 +407,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'device.getDevices'})); final DaemonMessage response = await daemonStreams.outputs.stream.firstWhere(_notEvent); @@ -405,6 +419,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); daemon.deviceDomain.addDeviceDiscoverer(discoverer); @@ -421,6 +436,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); @@ -434,6 +450,7 @@ void main() { previewBinary: fs.file(r'preview_device.exe'), artifacts: Artifacts.test(fileSystem: fs), builderFactory: () => throw UnimplementedError('TODO implement builder factory'), + useImplicitPubspecResolution: true, )); final List> names = >[]; @@ -504,6 +521,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'device.discoverDevices'})); final DaemonMessage response = await daemonStreams.outputs.stream.firstWhere(_notEvent); @@ -515,6 +533,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); daemon.deviceDomain.addDeviceDiscoverer(discoverer); @@ -532,6 +551,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); daemon.deviceDomain.addDeviceDiscoverer(discoverer); @@ -556,6 +576,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); daemon.deviceDomain.addDeviceDiscoverer(discoverer); @@ -607,6 +628,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); daemon.deviceDomain.addDeviceDiscoverer(discoverer); @@ -673,6 +695,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); daemon.deviceDomain.addDeviceDiscoverer(discoverer); @@ -732,6 +755,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final FakePollingDeviceDiscovery discoverer1 = FakePollingDeviceDiscovery(); discoverer1.diagnostics = ['fake diagnostic 1', 'fake diagnostic 2']; @@ -757,6 +781,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'emulator.launch'})); @@ -769,6 +794,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); final Map params = {'emulatorId': 'device', 'coldBoot': 1}; daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'emulator.launch', 'params': params})); @@ -781,6 +807,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'emulator.getEmulators'})); final DaemonMessage response = await daemonStreams.outputs.stream.firstWhere(_notEvent); @@ -795,6 +822,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); // Respond to any requests from the daemon to expose a URL. @@ -814,6 +842,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'devtools.serve'})); @@ -830,6 +859,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'devtools.serve'})); @@ -860,6 +890,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'proxy.connect', 'params': {'port': 123}})); @@ -920,6 +951,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'proxy.connect', 'params': {'port': 123}})); @@ -940,6 +972,7 @@ void main() { daemon = Daemon( daemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); daemonStreams.inputs.add(DaemonMessage({'id': 0, 'method': 'proxy.connect', 'params': {'port': 123}})); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/generate_localizations_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/generate_localizations_test.dart index 4c43876481..654c697b0a 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/generate_localizations_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/generate_localizations_test.dart @@ -64,7 +64,7 @@ void main() { ProcessManager: () => FakeProcessManager.any(), }); - testUsingContext('not using synthetic packages', () async { + testUsingContext('not using synthetic packages (explicitly)', () async { final Directory l10nDirectory = fileSystem.directory( fileSystem.path.join('lib', 'l10n'), ); @@ -104,6 +104,46 @@ flutter: ProcessManager: () => FakeProcessManager.any(), }); + testUsingContext('not using synthetic packages (due to --no-implicit-pubspec-resolution)', () async { + final Directory l10nDirectory = fileSystem.directory( + fileSystem.path.join('lib', 'l10n'), + ); + final File arbFile = l10nDirectory.childFile( + 'app_en.arb', + )..createSync(recursive: true); + + arbFile.writeAsStringSync(''' +{ + "helloWorld": "Hello, World!", + "@helloWorld": { + "description": "Sample description" + } +}'''); + fileSystem.file('pubspec.yaml').writeAsStringSync(''' +flutter: + generate: true'''); + + final GenerateLocalizationsCommand command = GenerateLocalizationsCommand( + fileSystem: fileSystem, + logger: logger, + artifacts: artifacts, + processManager: processManager, + ); + await createTestCommandRunner(command).run([ + '--no-implicit-pubspec-resolution', + 'gen-l10n', + ]); + + expect(l10nDirectory.existsSync(), true); + expect(l10nDirectory.childFile('app_localizations_en.dart').existsSync(), + true); + expect( + l10nDirectory.childFile('app_localizations.dart').existsSync(), true); + }, overrides: { + FileSystem: () => fileSystem, + ProcessManager: () => FakeProcessManager.any(), + }); + testUsingContext('throws error when arguments are invalid', () async { final File arbFile = fileSystem.file(fileSystem.path.join('lib', 'l10n', 'app_en.arb')) ..createSync(recursive: true); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/proxied_devices_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/proxied_devices_test.dart index 35468443cb..bbf6da01b8 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/proxied_devices_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/proxied_devices_test.dart @@ -71,6 +71,7 @@ void main() { daemon = Daemon( serverDaemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); fakeDevice = FakeAndroidDevice(); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); @@ -92,6 +93,7 @@ void main() { daemon = Daemon( serverDaemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); fakeDevice = FakeAndroidDevice(); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); @@ -114,6 +116,7 @@ void main() { daemon = Daemon( serverDaemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); fakeDevice = FakeAndroidDevice(); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); @@ -144,6 +147,7 @@ void main() { daemon = Daemon( serverDaemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); fakeDevice = FakeAndroidDevice(); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); @@ -197,6 +201,7 @@ void main() { daemon = Daemon( serverDaemonConnection, notifyingLogger: notifyingLogger, + useImplicitPubspecResolution: true, ); fakeDevice = FakeAndroidDevice(); final FakePollingDeviceDiscovery discoverer = FakePollingDeviceDiscovery(); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart index c49ceba6d5..b9b88871fc 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -1584,14 +1584,14 @@ class DaemonCapturingRunCommand extends RunCommand { @override Daemon createMachineDaemon() { daemon = super.createMachineDaemon(); - appDomain = daemon.appDomain = CapturingAppDomain(daemon); + appDomain = daemon.appDomain = CapturingAppDomain(daemon, useImplicitPubspecResolution: true); daemon.registerDomain(appDomain); return daemon; } } class CapturingAppDomain extends AppDomain { - CapturingAppDomain(super.daemon); + CapturingAppDomain(super.daemon, {required super.useImplicitPubspecResolution}); String? userIdentifier; bool? enableDevTools; 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 0cba55056e..143fd71414 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 @@ -544,5 +544,6 @@ class FakeBundleBuilder extends Fake implements BundleBuilder { String? assetDirPath, bool buildNativeAssets = true, @visibleForTesting BuildSystem? buildSystem, + required bool useImplicitPubspecResolution, }) async {} } diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/localizations_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/localizations_test.dart index 87c9957efd..cb3cc0e31a 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/localizations_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/localizations_test.dart @@ -53,6 +53,7 @@ nullable-getter: false file: configFile, logger: BufferLogger.test(), defaultArbDir: fileSystem.path.join('lib', 'l10n'), + defaultSyntheticPackage: true, ); expect(options.arbDir, Uri.parse('arb').path); @@ -69,6 +70,65 @@ nullable-getter: false expect(options.nullableGetter, false); }); + testWithoutContext( + 'parseLocalizationsOptions uses defaultSyntheticPackage = true', () async { + final FileSystem fileSystem = MemoryFileSystem.test(); + final File configFile = fileSystem.file('l10n.yaml')..writeAsStringSync(''' +arb-dir: arb +template-arb-file: example.arb +output-localization-file: bar +untranslated-messages-file: untranslated +output-class: Foo +header-file: header +header: HEADER +use-deferred-loading: true +preferred-supported-locales: en_US +# Intentionally omitted +# synthetic-package: ... +required-resource-attributes: false +nullable-getter: false +'''); + + final LocalizationOptions options = parseLocalizationsOptionsFromYAML( + file: configFile, + logger: BufferLogger.test(), + defaultArbDir: fileSystem.path.join('lib', 'l10n'), + defaultSyntheticPackage: true, + ); + + expect(options.syntheticPackage, true); + }); + + testWithoutContext( + 'parseLocalizationsOptions uses defaultSyntheticPackage = false', + () async { + final FileSystem fileSystem = MemoryFileSystem.test(); + final File configFile = fileSystem.file('l10n.yaml')..writeAsStringSync(''' +arb-dir: arb +template-arb-file: example.arb +output-localization-file: bar +untranslated-messages-file: untranslated +output-class: Foo +header-file: header +header: HEADER +use-deferred-loading: true +preferred-supported-locales: en_US +# Intentionally omitted +# synthetic-package: ... +required-resource-attributes: false +nullable-getter: false +'''); + + final LocalizationOptions options = parseLocalizationsOptionsFromYAML( + file: configFile, + logger: BufferLogger.test(), + defaultArbDir: fileSystem.path.join('lib', 'l10n'), + defaultSyntheticPackage: false, + ); + + expect(options.syntheticPackage, false); + }); + testWithoutContext('parseLocalizationsOptions handles preferredSupportedLocales as list', () async { final FileSystem fileSystem = MemoryFileSystem.test(); final File configFile = fileSystem.file('l10n.yaml')..writeAsStringSync(''' @@ -79,6 +139,7 @@ preferred-supported-locales: ['en_US', 'de'] file: configFile, logger: BufferLogger.test(), defaultArbDir: fileSystem.path.join('lib', 'l10n'), + defaultSyntheticPackage: true, ); expect(options.preferredSupportedLocales, ['en_US', 'de']); @@ -97,6 +158,7 @@ use-deferred-loading: string file: configFile, logger: BufferLogger.test(), defaultArbDir: fileSystem.path.join('lib', 'l10n'), + defaultSyntheticPackage: true, ), throwsException, ); @@ -113,6 +175,7 @@ template-arb-file: {name}_en.arb file: configFile, logger: BufferLogger.test(), defaultArbDir: fileSystem.path.join('lib', 'l10n'), + defaultSyntheticPackage: true, ), throwsToolExit(), ); diff --git a/packages/flutter_tools/test/general.shard/bundle_builder_test.dart b/packages/flutter_tools/test/general.shard/bundle_builder_test.dart index 281e50e0f3..29618bd22e 100644 --- a/packages/flutter_tools/test/general.shard/bundle_builder_test.dart +++ b/packages/flutter_tools/test/general.shard/bundle_builder_test.dart @@ -47,7 +47,8 @@ void main() { mainPath: globals.fs.path.join('lib', 'main.dart'), assetDirPath: 'example', depfilePath: 'example.d', - buildSystem: buildSystem + buildSystem: buildSystem, + useImplicitPubspecResolution: true, ); expect(globals.fs.file(globals.fs.path.join('example', 'kernel_blob.bin')).existsSync(), true); expect(globals.fs.file(globals.fs.path.join('example', 'LICENSE')).existsSync(), true); @@ -136,7 +137,8 @@ void main() { mainPath: 'lib/main.dart', assetDirPath: 'example', depfilePath: 'example.d', - buildSystem: TestBuildSystem.all(BuildResult(success: false)) + buildSystem: TestBuildSystem.all(BuildResult(success: false)), + useImplicitPubspecResolution: true, ), throwsToolExit() ); @@ -181,7 +183,8 @@ void main() { mainPath: mainPath, assetDirPath: assetDirPath, depfilePath: depfilePath, - buildSystem: buildSystem + buildSystem: buildSystem, + useImplicitPubspecResolution: true, ); expect(env, isNotNull); diff --git a/packages/flutter_tools/test/general.shard/cold_test.dart b/packages/flutter_tools/test/general.shard/cold_test.dart index 51521645e4..ceaa035312 100644 --- a/packages/flutter_tools/test/general.shard/cold_test.dart +++ b/packages/flutter_tools/test/general.shard/cold_test.dart @@ -42,6 +42,7 @@ void main() { final int exitCode = await ColdRunner(devices, debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), target: 'main.dart', + useImplicitPubspecResolution: true, ).attach(); expect(exitCode, 2); }); @@ -58,6 +59,7 @@ void main() { await ColdRunner(devices, debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), target: 'main.dart', + useImplicitPubspecResolution: true, ).cleanupAtFinish(); expect(flutterDevice1.stopEchoingDeviceLogCount, 1); @@ -87,6 +89,7 @@ void main() { applicationBinary: applicationBinary, debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), target: 'main.dart', + useImplicitPubspecResolution: true, ).run(); expect(result, 1); @@ -103,6 +106,7 @@ void main() { debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), target: 'main.dart', traceStartup: true, + useImplicitPubspecResolution: true, ).run(); expect(result, 0); @@ -126,6 +130,7 @@ void main() { debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), target: 'main.dart', traceStartup: true, + useImplicitPubspecResolution: true, ).run(); expect(result, 0); diff --git a/packages/flutter_tools/test/general.shard/commands/daemon_test.dart b/packages/flutter_tools/test/general.shard/commands/daemon_test.dart index b294e6cb9f..b2240362d8 100644 --- a/packages/flutter_tools/test/general.shard/commands/daemon_test.dart +++ b/packages/flutter_tools/test/general.shard/commands/daemon_test.dart @@ -29,6 +29,7 @@ void main() { bindPorts.add(port); return socket; }, + useImplicitPubspecResolution: true, ); await server.run(); expect(bindCalledTimes, 1); @@ -56,6 +57,7 @@ void main() { } return socket; }, + useImplicitPubspecResolution: true, ); await server.run(); expect(bindCalledTimes, 2); diff --git a/packages/flutter_tools/test/general.shard/custom_devices/custom_device_test.dart b/packages/flutter_tools/test/general.shard/custom_devices/custom_device_test.dart index 900062e585..9dc78fdaf6 100644 --- a/packages/flutter_tools/test/general.shard/custom_devices/custom_device_test.dart +++ b/packages/flutter_tools/test/general.shard/custom_devices/custom_device_test.dart @@ -122,7 +122,8 @@ void main() { final CustomDevice device = CustomDevice( config: testConfig, processManager: FakeProcessManager.any(), - logger: BufferLogger.test() + logger: BufferLogger.test(), + useImplicitPubspecResolution: true, ); final PrebuiltLinuxApp linuxApp = PrebuiltLinuxApp(executable: 'foo'); @@ -165,7 +166,8 @@ void main() { fileSystem: fs, directory: dir, logger: BufferLogger.test() - ) + ), + useImplicitPubspecResolution: true, ).devices(), []); }); @@ -183,7 +185,8 @@ void main() { fileSystem: fs, directory: dir, logger: BufferLogger.test() - ) + ), + useImplicitPubspecResolution: true, ).devices(), []); }); @@ -207,7 +210,8 @@ void main() { fileSystem: fs, directory: dir, logger: BufferLogger.test() - ) + ), + useImplicitPubspecResolution: true, ).devices(), hasLength(1) ); @@ -236,6 +240,7 @@ void main() { directory: dir, logger: BufferLogger.test(), ), + useImplicitPubspecResolution: true, ); final List discoveredDevices = await discovery.discoverDevices(); @@ -265,6 +270,7 @@ void main() { directory: dir, logger: BufferLogger.test(), ), + useImplicitPubspecResolution: true, ); expect(await discovery.discoverDevices(), hasLength(0)); @@ -289,6 +295,7 @@ void main() { directory: dir, logger: BufferLogger.test(), ), + useImplicitPubspecResolution: true, ); expect(await discovery.discoverDevices(), hasLength(0)); @@ -308,6 +315,7 @@ void main() { config: testConfig, logger: BufferLogger.test(), processManager: FakeProcessManager.any(), + useImplicitPubspecResolution: true, ).isSupportedForProject(flutterProject), true); }); @@ -317,12 +325,13 @@ void main() { bool bothCommandsWereExecuted = false; final CustomDevice device = CustomDevice( - config: testConfig, - logger: BufferLogger.test(), - processManager: FakeProcessManager.list([ - FakeCommand(command: testConfig.uninstallCommand), - FakeCommand(command: testConfig.installCommand, onRun: (_) => bothCommandsWereExecuted = true), - ]) + config: testConfig, + logger: BufferLogger.test(), + processManager: FakeProcessManager.list([ + FakeCommand(command: testConfig.uninstallCommand), + FakeCommand(command: testConfig.installCommand, onRun: (_) => bothCommandsWereExecuted = true), + ]), + useImplicitPubspecResolution: true, ); expect(await device.installApp(PrebuiltLinuxApp(executable: 'exe')), true); @@ -384,7 +393,8 @@ void main() { device: CustomDevice( config: testConfig, logger: BufferLogger.test(), - processManager: processManager + processManager: processManager, + useImplicitPubspecResolution: true, ), appPackage: PrebuiltLinuxApp(executable: 'testexecutable'), logger: BufferLogger.test(), @@ -421,7 +431,8 @@ void main() { device: CustomDevice( config: testConfigNonForwarding, logger: BufferLogger.test(), - processManager: processManager + processManager: processManager, + useImplicitPubspecResolution: true, ), appPackage: PrebuiltLinuxApp(executable: 'testexecutable'), logger: BufferLogger.test(), @@ -486,7 +497,8 @@ void main() { fileSystem: fs, directory: configFileDir, logger: BufferLogger.test() - ) + ), + useImplicitPubspecResolution: true, ); final List devices = await customDevices.discoverDevices(); @@ -535,7 +547,8 @@ void main() { final CustomDevice device = CustomDevice( config: testConfig, logger: BufferLogger.test(), - processManager: processManager + processManager: processManager, + useImplicitPubspecResolution: true, ); expect(device.supportsScreenshot, true); @@ -563,7 +576,8 @@ void main() { explicitScreenshotCommand: true ), logger: BufferLogger.test(), - processManager: processManager + processManager: processManager, + useImplicitPubspecResolution: true, ); expect(device.supportsScreenshot, false); @@ -581,7 +595,8 @@ void main() { platform: TargetPlatform.linux_x64 ), logger: BufferLogger.test(), - processManager: FakeProcessManager.empty() + processManager: FakeProcessManager.empty(), + useImplicitPubspecResolution: true, ); expect(await device.targetPlatform, TargetPlatform.linux_x64); @@ -649,6 +664,7 @@ class FakeBundleBuilder extends Fake implements BundleBuilder { String? assetDirPath, Uri? nativeAssets, bool buildNativeAssets = true, + required bool useImplicitPubspecResolution, @visibleForTesting BuildSystem? buildSystem }) async {} } diff --git a/packages/flutter_tools/test/general.shard/drive/web_driver_service_test.dart b/packages/flutter_tools/test/general.shard/drive/web_driver_service_test.dart index 8854e2c7a6..840a872d7e 100644 --- a/packages/flutter_tools/test/general.shard/drive/web_driver_service_test.dart +++ b/packages/flutter_tools/test/general.shard/drive/web_driver_service_test.dart @@ -318,6 +318,7 @@ class FakeWebRunnerFactory implements WebRunnerFactory { Usage? usage, Analytics? analytics, bool machine = false, + required bool useImplicitPubspecResolution, }) { expect(stayResident, isTrue); return FakeResidentRunner( @@ -381,6 +382,7 @@ WebDriverService setUpDriverService() { processManager: FakeProcessManager.any(), ), dartSdkPath: 'dart', + useImplicitPubspecResolution: true, ); } diff --git a/packages/flutter_tools/test/general.shard/hot_test.dart b/packages/flutter_tools/test/general.shard/hot_test.dart index 6e25dbab72..6a2b4bad38 100644 --- a/packages/flutter_tools/test/general.shard/hot_test.dart +++ b/packages/flutter_tools/test/general.shard/hot_test.dart @@ -149,6 +149,7 @@ void main() { debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, analytics: fakeAnalytics, ).restart(fullRestart: true); expect(result.isOk, false); @@ -181,6 +182,7 @@ void main() { debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, reassembleHelper: ( List flutterDevices, Map> viewCache, @@ -230,6 +232,7 @@ void main() { debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), target: 'main.dart', analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ).cleanupAfterSignal(); expect(shutdownTestingConfig.shutdownHookCalled, true); }, overrides: { @@ -258,6 +261,7 @@ void main() { debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug), target: 'main.dart', analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ).preExit(); expect(shutdownTestingConfig.shutdownHookCalled, true); }, overrides: { @@ -308,6 +312,7 @@ void main() { devtoolsHandler: createNoOpHandler, stopwatchFactory: fakeStopwatchFactory, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ).restart(fullRestart: true); expect(result.isOk, true); @@ -395,6 +400,7 @@ void main() { devtoolsHandler: createNoOpHandler, stopwatchFactory: fakeStopwatchFactory, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, reloadSourcesHelper: ( HotRunner hotRunner, List flutterDevices, @@ -501,6 +507,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await expectLater(runner.restart(fullRestart: true), throwsA(isA().having((Exception e) => e.toString(), 'message', 'Exception: updateDevFS failed'))); @@ -536,6 +543,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await expectLater(runner.restart(), throwsA(isA().having((Exception e) => e.toString(), 'message', 'Exception: updateDevFS failed'))); @@ -589,6 +597,7 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), target: 'main.dart', analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ).attach(needsFullRestart: false); expect(exitCode, 2); }, overrides: { @@ -627,6 +636,7 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), target: 'main.dart', analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ).cleanupAtFinish(); expect(device1.disposed, true); diff --git a/packages/flutter_tools/test/general.shard/isolated/hot_test.dart b/packages/flutter_tools/test/general.shard/isolated/hot_test.dart index 5688546920..5eae75909a 100644 --- a/packages/flutter_tools/test/general.shard/isolated/hot_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/hot_test.dart @@ -89,6 +89,7 @@ void main() { devtoolsHandler: createNoOpHandler, nativeAssetsBuilder: FakeHotRunnerNativeAssetsBuilder(buildRunner), analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); final OperationResult result = await hotRunner.restart(fullRestart: true); expect(result.isOk, true); @@ -157,6 +158,7 @@ void main() { devtoolsHandler: createNoOpHandler, nativeAssetsBuilder: FakeHotRunnerNativeAssetsBuilder(buildRunner), analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); expect( () => hotRunner.run(), diff --git a/packages/flutter_tools/test/general.shard/isolated/resident_runner_test.dart b/packages/flutter_tools/test/general.shard/isolated/resident_runner_test.dart index aec2532085..45999bdd01 100644 --- a/packages/flutter_tools/test/general.shard/isolated/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/resident_runner_test.dart @@ -74,6 +74,7 @@ void main() { nativeAssetsBuilder: FakeHotRunnerNativeAssetsBuilder(buildRunner), analytics: FakeAnalytics(), nativeAssetsYamlFile: 'foo.yaml', + useImplicitPubspecResolution: true, ); final int result = await residentRunner.run(); diff --git a/packages/flutter_tools/test/general.shard/preview_device_test.dart b/packages/flutter_tools/test/general.shard/preview_device_test.dart index f65648f509..b00fb12fd1 100644 --- a/packages/flutter_tools/test/general.shard/preview_device_test.dart +++ b/packages/flutter_tools/test/general.shard/preview_device_test.dart @@ -49,6 +49,7 @@ void main() { processManager: FakeProcessManager.any(), previewBinary: previewBinary, logger: BufferLogger.test(), + useImplicitPubspecResolution: true, ); expect(await device.isLocalEmulator, false); @@ -84,6 +85,7 @@ void main() { ]), logger: logger, builderFactory: () => FakeBundleBuilder(fs), + useImplicitPubspecResolution: true, ); final Directory previewDeviceCacheDir = fs .directory('Artifact.windowsDesktopPath.TargetPlatform.windows_x64.debug') @@ -121,6 +123,7 @@ void main() { processManager: processManager, platform: linuxPlatform, featureFlags: featureFlags, + useImplicitPubspecResolution: true, ); final List devices = await discovery.devices(); @@ -136,6 +139,7 @@ void main() { processManager: processManager, platform: macPlatform, featureFlags: featureFlags, + useImplicitPubspecResolution: true, ); final List devices = await discovery.devices(); @@ -153,6 +157,7 @@ void main() { processManager: processManager, platform: windowsPlatform, featureFlags: featureFlags, + useImplicitPubspecResolution: true, ); final List devices = await discovery.devices(); @@ -170,6 +175,7 @@ void main() { processManager: processManager, platform: windowsPlatform, featureFlags: featureFlags, + useImplicitPubspecResolution: true, ); final List devices = await discovery.devices(); @@ -197,7 +203,8 @@ class FakeBundleBuilder extends Fake implements BundleBuilder { String? depfilePath, String? assetDirPath, bool buildNativeAssets = true, - @visibleForTesting BuildSystem? buildSystem + @visibleForTesting BuildSystem? buildSystem, + required bool useImplicitPubspecResolution, }) async { final Directory assetDirectory = fileSystem .directory(assetDirPath) diff --git a/packages/flutter_tools/test/general.shard/resident_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_runner_test.dart index d67264c16d..95bdd3168e 100644 --- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart @@ -63,6 +63,7 @@ void main() { target: 'main.dart', analytics: fakeAnalytics, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); }, overrides: { Analytics: () => FakeAnalytics(), @@ -114,6 +115,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: globals.analytics, + useImplicitPubspecResolution: true, ); flutterDevice.generator = residentCompiler; @@ -138,6 +140,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: globals.analytics, + useImplicitPubspecResolution: true, ); flutterDevice.generator = residentCompiler; @@ -159,6 +162,7 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.release), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); flutterDevice.runColdCode = 1; @@ -180,6 +184,7 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.release), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); flutterDevice.runColdError = Exception('BAD STUFF'); @@ -208,6 +213,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: globals.analytics, + useImplicitPubspecResolution: true, ); flutterDevice.generator = residentCompiler; @@ -268,6 +274,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: globals.analytics, + useImplicitPubspecResolution: true, ); final Completer futureConnectionInfo = Completer.sync(); final Completer futureAppStart = Completer.sync(); @@ -409,6 +416,7 @@ void main() { enableDevTools: false, ), analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); final Completer futureConnectionInfo = Completer.sync(); final Completer futureAppStart = Completer.sync(); @@ -473,6 +481,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); final Completer futureConnectionInfo = Completer.sync(); final Completer futureAppStart = Completer.sync(); @@ -737,6 +746,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); devFS.nextUpdateReport = UpdateFSReport( success: true, @@ -1081,6 +1091,7 @@ void main() { target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); expect(otherRunner.artifactDirectory.path, contains('foobar')); })); @@ -1194,6 +1205,7 @@ flutter: target: 'custom_main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await residentRunner.runSourceGenerators(); @@ -1254,6 +1266,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); flutterDevice.generator = residentCompiler; @@ -1354,6 +1367,7 @@ flutter: debuggingOptions: DebuggingOptions.disabled(BuildInfo.release), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); residentRunner.printHelp(details: true); @@ -1389,6 +1403,7 @@ flutter: debuggingOptions: DebuggingOptions.disabled(BuildInfo.release), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); residentRunner.printHelp(details: false); @@ -1478,6 +1493,7 @@ flutter: debuggingOptions: DebuggingOptions.enabled(BuildInfo.profile, vmserviceOutFile: 'foo', enableDevTools: false), target: 'main.dart', devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); final Future result = residentRunner.attach(); @@ -1523,6 +1539,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await residentRunner.run(); @@ -1553,6 +1570,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC'); @@ -1584,6 +1602,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC'); @@ -1616,6 +1635,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC'); @@ -1640,6 +1660,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC'); @@ -1665,6 +1686,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC'); @@ -1694,6 +1716,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); residentRunner.artifactDirectory.childFile('app.dill').writeAsStringSync('ABC'); @@ -1717,6 +1740,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await residentRunner.run(); @@ -1738,6 +1762,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await residentRunner.run(); @@ -1761,6 +1786,7 @@ flutter: debuggingOptions: DebuggingOptions.enabled(BuildInfo.profile, vmserviceOutFile: 'foo'), devtoolsHandler: createNoOpHandler, target: 'main.dart', + useImplicitPubspecResolution: true, ); await residentRunner.run(); @@ -2142,6 +2168,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await residentRunner.cleanupAtFinish(); @@ -2163,6 +2190,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); (flutterDevice.devFS! as FakeDevFS).assetPathsToEvict = {'asset'}; @@ -2188,6 +2216,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); (flutterDevice.devFS! as FakeDevFS).shaderPathsToEvict = {'foo.frag'}; @@ -2210,6 +2239,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); expect(flutterDevice.devFS!.hasSetAssetDirectory, false); @@ -2232,6 +2262,7 @@ flutter: target: 'main.dart', devtoolsHandler: createNoOpHandler, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); (flutterDevice.devFS! as FakeDevFS).assetPathsToEvict = {'asset'}; @@ -2281,6 +2312,7 @@ flutter: devtoolsHandler: createNoOpHandler, analytics: globals.analytics, nativeAssetsYamlFile: 'foo.yaml', + useImplicitPubspecResolution: true, ); final int? result = await residentRunner.run(); diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart index ceb06a96a1..ecef00234c 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart @@ -61,6 +61,7 @@ void main() { fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), ), + useImplicitPubspecResolution: true, ); final Completer connectionInfoCompleter = Completer(); @@ -91,6 +92,7 @@ void main() { fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), ), + useImplicitPubspecResolution: true, ); expect(() => residentWebRunner.run(), throwsToolExit()); @@ -116,6 +118,7 @@ void main() { fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), ), + useImplicitPubspecResolution: true, ); expect(() async => residentWebRunner.run(), throwsException); @@ -140,6 +143,7 @@ void main() { fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), ), + useImplicitPubspecResolution: true, ); final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( @@ -169,6 +173,7 @@ void main() { fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), ), + useImplicitPubspecResolution: true, ); final Completer connectionInfoCompleter = Completer(); unawaited(residentWebRunner.run( diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart index c934dc5b4d..5af054eed8 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart @@ -170,6 +170,7 @@ void main() { usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, + useImplicitPubspecResolution: true, ); expect(profileResidentWebRunner.debuggingEnabled, false); @@ -202,6 +203,7 @@ void main() { usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, + useImplicitPubspecResolution: true, ); expect(profileResidentWebRunner.uri, webDevFS.baseUri); @@ -221,6 +223,7 @@ void main() { usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, + useImplicitPubspecResolution: true, ); fakeVmServiceHost = FakeVmServiceHost(requests: []); flutterDevice.device = chromeDevice; @@ -234,6 +237,7 @@ void main() { usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, + useImplicitPubspecResolution: true, ); expect(profileResidentWebRunner.supportsServiceProtocol, false); @@ -368,6 +372,7 @@ void main() { analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); expect(await residentWebRunner.run(), 0); @@ -395,6 +400,7 @@ void main() { analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); expect(await residentWebRunner.run(), 0); @@ -596,6 +602,7 @@ void main() { analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); fakeVmServiceHost = FakeVmServiceHost(requests: kAttachExpectations.toList()); @@ -1120,6 +1127,7 @@ void main() { analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); final Completer connectionInfoCompleter = @@ -1169,6 +1177,7 @@ void main() { analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); final Completer connectionInfoCompleter = @@ -1212,6 +1221,7 @@ void main() { analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); // Create necessary files. @@ -1468,6 +1478,7 @@ ResidentRunner setUpResidentRunner( fileSystem: globals.fs, logger: logger ?? BufferLogger.test(), devtoolsHandler: createNoOpHandler, + useImplicitPubspecResolution: true, ); } diff --git a/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart b/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart index 672eb9d03c..fce8dbef67 100644 --- a/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart +++ b/packages/flutter_tools/test/general.shard/tester/flutter_tester_test.dart @@ -98,6 +98,7 @@ void main() { artifacts: Artifacts.test(), logger: BufferLogger.test(), flutterVersion: FakeFlutterVersion(), + useImplicitPubspecResolution: true, ); logLines = []; device.getLogReader().logLines.listen(logLines.add); @@ -217,6 +218,7 @@ FlutterTesterDevices setUpFlutterTesterDevices() { processManager: FakeProcessManager.any(), fileSystem: MemoryFileSystem.test(), flutterVersion: FakeFlutterVersion(), + useImplicitPubspecResolution: true, ); } diff --git a/packages/flutter_tools/test/general.shard/web/compile_web_test.dart b/packages/flutter_tools/test/general.shard/web/compile_web_test.dart index f854726472..67f5a8bed8 100644 --- a/packages/flutter_tools/test/general.shard/web/compile_web_test.dart +++ b/packages/flutter_tools/test/general.shard/web/compile_web_test.dart @@ -70,6 +70,7 @@ void main() { flutterVersion: flutterVersion, fileSystem: fileSystem, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await webBuilder.buildWeb( flutterProject, @@ -160,6 +161,7 @@ void main() { flutterVersion: flutterVersion, fileSystem: fileSystem, analytics: fakeAnalytics, + useImplicitPubspecResolution: true, ); await expectLater( () async => webBuilder.buildWeb( diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index 8207b601da..e18af3f34f 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart @@ -183,7 +183,7 @@ void testUsingContext( // can provide the AlwaysFalseBotDetector in the overrides, or its own // BotDetector implementation in the overrides. BotDetector: overrides[BotDetector] ?? () => const FakeBotDetector(true), - }); + }, useImplicitPubspecResolution: true); }, testOn: testOn, skip: skip); // We don't support "timeout"; see ../../dart_test.yaml which // configures all tests to have a 15 minute timeout which should diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart index e293a788b1..056de65177 100644 --- a/packages/flutter_tools/test/src/testbed.dart +++ b/packages/flutter_tools/test/src/testbed.dart @@ -92,7 +92,7 @@ class Testbed { /// /// `overrides` may be used to provide new context values for the single test /// case or override any context values from the setup. - Future run(FutureOr Function() test, {Map? overrides}) { + Future run(FutureOr Function() test, {Map? overrides, bool useImplicitPubspecResolution = true}) { final Map testOverrides = { ..._testbedDefaults, // Add the initial setUp overrides @@ -139,7 +139,7 @@ class Testbed { } return null; }); - }); + }, useImplicitPubspecResolution: useImplicitPubspecResolution); }, createHttpClient: (SecurityContext? c) => FakeHttpClient.any()); } } diff --git a/packages/flutter_tools/test/web.shard/web_driver_service_test.dart b/packages/flutter_tools/test/web.shard/web_driver_service_test.dart index 6b9cfb8316..8d47b72ffd 100644 --- a/packages/flutter_tools/test/web.shard/web_driver_service_test.dart +++ b/packages/flutter_tools/test/web.shard/web_driver_service_test.dart @@ -21,6 +21,7 @@ void main() { processManager: FakeProcessManager.empty(), ), dartSdkPath: 'dart', + useImplicitPubspecResolution: true, ); const String link = 'https://flutter.dev/to/integration-test-on-web'; try {