Add and plumb useImplicitPubspecResolution across flutter_tools. (#157879)

Work towards https://github.com/flutter/flutter/issues/157819. **No behavior changes as a result of this PR**.

Based on a proof of concept by @jonahwilliams (https://github.com/flutter/flutter/pull/157818).

The existence of this flag (which for the time being, defaults to `true`) implies the following:

1. The (legacy, deprecated) `.flutter-plugins` file is not generated:
    https://docs.flutter.dev/release/breaking-changes/flutter-plugins-configuration
    
2. The (legacy, deprecated) `package:flutter_gen` is not synthetically generated:
    https://github.com/flutter/website/pull/11343
    (awaiting website approvers, but owners approve this change)

This change creates `useImplicitPubspecResolution` and plumbs it through as a required variable, parsing it from a `FlutterCommand.globalResults` where able. In tests, I've defaulted the value to `true` 100% of the time - except for places where the value itself is acted on directly, in which case there are true and false test-cases (e.g. localization and i10n based classes and functions).

I'm not extremely happy this needed to change 50+ files, but is sort of a result of how inter-connected many of the elements of the tools are. I believe keeping this as an explicit (flagged) argument will be our best way to ensure the default behavior changes consistently and that tests are running as expected.
This commit is contained in:
Matan Lurey 2024-10-31 03:43:25 -07:00 committed by GitHub
parent 6aaa387f2e
commit fb022290ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
57 changed files with 409 additions and 40 deletions

View File

@ -34,7 +34,7 @@ const List<String> _kRequiredOptions = <String>[
Future<void> main(List<String> args) {
return runInContext<void>(() => run(args), overrides: <Type, Generator>{
Usage: () => DisabledUsage(),
});
}, useImplicitPubspecResolution: true);
}
Future<void> writeAssetFile(libfs.File outputFile, AssetBundleEntry asset) async {

View File

@ -43,7 +43,7 @@ const String _kOptionCoveragePath = 'coverage-path';
void main(List<String> args) {
runInContext<void>(() => run(args), overrides: <Type, Generator>{
Usage: () => DisabledUsage(),
});
}, useImplicitPubspecResolution: true);
}
Future<void> run(List<String> args) async {

View File

@ -347,6 +347,7 @@ class Environment {
required Analytics analytics,
String? engineVersion,
required bool generateDartPluginRegistry,
required bool useImplicitPubspecResolution,
Directory? buildDir,
Map<String, String> defines = const <String, String>{},
Map<String, String> inputs = const <String, String>{},
@ -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,

View File

@ -56,6 +56,7 @@ class GenerateLocalizationsTarget extends Target {
file: configFile,
logger: environment.logger,
defaultArbDir: defaultArbDir,
defaultSyntheticPackage: environment.useImplicitPubspecResolution,
);
await generateLocalizations(
logger: environment.logger,

View File

@ -37,6 +37,7 @@ class BundleBuilder {
Future<void> 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

View File

@ -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<Target> _kDefaultTargets = <Target>[
@ -252,6 +253,7 @@ class AssembleCommand extends FlutterCommand {
? null
: globals.flutterVersion.engineRevision,
generateDartPluginRegistry: true,
useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution),
);
return result;
}

View File

@ -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,
);
}

View File

@ -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();
}

View File

@ -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.

View File

@ -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.

View File

@ -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,

View File

@ -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<String> _kAvailablePlatforms = <String>[
@ -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

View File

@ -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;

View File

@ -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<FlutterCommandResult> 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<NotifyingLogger>(globals.logger),
useImplicitPubspecResolution: useImplicitPubspecResolution,
).run();
return FlutterCommandResult.success();
}
@ -92,6 +95,7 @@ class DaemonCommand extends FlutterCommand {
logger: globals.logger,
),
notifyingLogger: asLogger<NotifyingLogger>(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<ServerSocket> 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<ServerSocket> 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<Object?> Function(Map<String, Object?>
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<void> 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<AppInstance> _apps = <AppInstance>[];
final bool _useImplicitPubspecResolution;
final DebounceOperationQueue<OperationResult, OperationType> operationQueue = DebounceOperationQueue<OperationResult, OperationType>();
@ -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,
);
}

View File

@ -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);

View File

@ -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 '

View File

@ -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(),

View File

@ -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;
}

View File

@ -68,6 +68,7 @@ import 'windows/windows_workflow.dart';
Future<T> runInContext<T>(
FutureOr<T> Function() runner, {
bool useImplicitPubspecResolution = true,
Map<Type, Generator>? overrides,
}) async {
@ -210,6 +211,7 @@ Future<T> runInContext<T>(
operatingSystemUtils: globals.os,
customDevicesConfig: globals.customDevicesConfig,
nativeAssetsBuilder: globals.nativeAssetsBuilder,
useImplicitPubspecResolution: useImplicitPubspecResolution,
),
DevtoolsLauncher: () => DevtoolsServerLauncher(
processManager: globals.processManager,

View File

@ -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<ApplicationPackage, CustomDeviceAppSession> _sessions = <ApplicationPackage, CustomDeviceAppSession>{};
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();
}

View File

@ -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(

View File

@ -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<void> appStartedCompleter = Completer<void>.sync();
final Future<int?> runFuture = _residentRunner.run(

View File

@ -53,6 +53,7 @@ class FlutterDeviceManager extends DeviceManager {
required WindowsWorkflow windowsWorkflow,
required CustomDevicesConfig customDevicesConfig,
required TestCompilerNativeAssetsBuilder? nativeAssetsBuilder,
required bool useImplicitPubspecResolution,
}) : deviceDiscoverers = <DeviceDiscovery>[
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,
),
];

View File

@ -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(
<FlutterDevice>[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,

View File

@ -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'),

View File

@ -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 <Device>[
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()),

View File

@ -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(<Target>[

View File

@ -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,

View File

@ -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,

View File

@ -1770,6 +1770,7 @@ Run 'flutter -h' (or 'flutter <command> -h') for available flutter commands and
projectDir: project.directory,
packageConfigPath: packageConfigPath(),
generateDartPluginRegistry: true,
useImplicitPubspecResolution: globalResults!.flag(FlutterGlobalOptions.kImplicitPubspecResolution),
);
await pub.get(

View File

@ -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<String> command = <String>[
@ -265,6 +269,7 @@ class FlutterTesterDevices extends PollingDeviceDiscovery {
required ProcessManager processManager,
required Logger logger,
required FlutterVersion flutterVersion,
required bool useImplicitPubspecResolution,
TestCompilerNativeAssetsBuilder? nativeAssetsBuilder,
}) : _testerDevice = FlutterTesterDevice(
kTesterDeviceId,
@ -274,6 +279,7 @@ class FlutterTesterDevices extends PollingDeviceDiscovery {
logger: logger,
flutterVersion: flutterVersion,
nativeAssetsBuilder: nativeAssetsBuilder,
useImplicitPubspecResolution: useImplicitPubspecResolution,
),
super('Flutter tester');

View File

@ -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<void> 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) {

View File

@ -33,6 +33,7 @@ abstract class WebRunnerFactory {
required SystemClock systemClock,
required Usage usage,
required Analytics analytics,
required bool useImplicitPubspecResolution,
bool machine = false,
});
}

View File

@ -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) {

View File

@ -99,6 +99,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'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<void>.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<void>.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(<String, Object?>{'id': 0, 'method': 'daemon.shutdown'}));
return daemon.onExit.then<void>((int code) async {
@ -352,6 +362,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'app.restart'}));
@ -364,6 +375,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{
@ -382,6 +394,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'app.stop'}));
@ -394,6 +407,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'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<Map<String, Object?>> names = <Map<String, Object?>>[];
@ -504,6 +521,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'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 = <String>['fake diagnostic 1', 'fake diagnostic 2'];
@ -757,6 +781,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'emulator.launch'}));
@ -769,6 +794,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
final Map<String, Object?> params = <String, Object?>{'emulatorId': 'device', 'coldBoot': 1};
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'emulator.launch', 'params': params}));
@ -781,6 +807,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'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(<String, Object?>{'id': 0, 'method': 'devtools.serve'}));
@ -830,6 +859,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'devtools.serve'}));
@ -860,6 +890,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'proxy.connect', 'params': <String, Object?>{'port': 123}}));
@ -920,6 +951,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'proxy.connect', 'params': <String, Object?>{'port': 123}}));
@ -940,6 +972,7 @@ void main() {
daemon = Daemon(
daemonConnection,
notifyingLogger: notifyingLogger,
useImplicitPubspecResolution: true,
);
daemonStreams.inputs.add(DaemonMessage(<String, Object?>{'id': 0, 'method': 'proxy.connect', 'params': <String, Object?>{'port': 123}}));

View File

@ -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(<String>[
'--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: <Type, Generator>{
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);

View File

@ -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();

View File

@ -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;

View File

@ -544,5 +544,6 @@ class FakeBundleBuilder extends Fake implements BundleBuilder {
String? assetDirPath,
bool buildNativeAssets = true,
@visibleForTesting BuildSystem? buildSystem,
required bool useImplicitPubspecResolution,
}) async {}
}

View File

@ -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, <String>['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(),
);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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(), <Device>[]);
});
@ -183,7 +185,8 @@ void main() {
fileSystem: fs,
directory: dir,
logger: BufferLogger.test()
)
),
useImplicitPubspecResolution: true,
).devices(), <Device>[]);
});
@ -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<Device> 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>[
FakeCommand(command: testConfig.uninstallCommand),
FakeCommand(command: testConfig.installCommand, onRun: (_) => bothCommandsWereExecuted = true),
])
config: testConfig,
logger: BufferLogger.test(),
processManager: FakeProcessManager.list(<FakeCommand>[
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<Device> 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 {}
}

View File

@ -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,
);
}

View File

@ -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<FlutterDevice?> flutterDevices,
Map<FlutterDevice?, List<FlutterView>> 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: <Type, Generator>{
@ -258,6 +261,7 @@ void main() {
debuggingOptions: DebuggingOptions.disabled(BuildInfo.debug),
target: 'main.dart',
analytics: fakeAnalytics,
useImplicitPubspecResolution: true,
).preExit();
expect(shutdownTestingConfig.shutdownHookCalled, true);
}, overrides: <Type, Generator>{
@ -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<FlutterDevice?> flutterDevices,
@ -501,6 +507,7 @@ void main() {
target: 'main.dart',
devtoolsHandler: createNoOpHandler,
analytics: fakeAnalytics,
useImplicitPubspecResolution: true,
);
await expectLater(runner.restart(fullRestart: true), throwsA(isA<Exception>().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<Exception>().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: <Type, Generator>{
@ -627,6 +636,7 @@ void main() {
debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug),
target: 'main.dart',
analytics: fakeAnalytics,
useImplicitPubspecResolution: true,
).cleanupAtFinish();
expect(device1.disposed, true);

View File

@ -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(),

View File

@ -74,6 +74,7 @@ void main() {
nativeAssetsBuilder: FakeHotRunnerNativeAssetsBuilder(buildRunner),
analytics: FakeAnalytics(),
nativeAssetsYamlFile: 'foo.yaml',
useImplicitPubspecResolution: true,
);
final int result = await residentRunner.run();

View File

@ -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<Device> devices = await discovery.devices();
@ -136,6 +139,7 @@ void main() {
processManager: processManager,
platform: macPlatform,
featureFlags: featureFlags,
useImplicitPubspecResolution: true,
);
final List<Device> devices = await discovery.devices();
@ -153,6 +157,7 @@ void main() {
processManager: processManager,
platform: windowsPlatform,
featureFlags: featureFlags,
useImplicitPubspecResolution: true,
);
final List<Device> devices = await discovery.devices();
@ -170,6 +175,7 @@ void main() {
processManager: processManager,
platform: windowsPlatform,
featureFlags: featureFlags,
useImplicitPubspecResolution: true,
);
final List<Device> 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)

View File

@ -63,6 +63,7 @@ void main() {
target: 'main.dart',
analytics: fakeAnalytics,
devtoolsHandler: createNoOpHandler,
useImplicitPubspecResolution: true,
);
}, overrides: <Type, Generator>{
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<DebugConnectionInfo> futureConnectionInfo = Completer<DebugConnectionInfo>.sync();
final Completer<void> futureAppStart = Completer<void>.sync();
@ -409,6 +416,7 @@ void main() {
enableDevTools: false,
),
analytics: fakeAnalytics,
useImplicitPubspecResolution: true,
);
final Completer<DebugConnectionInfo> futureConnectionInfo = Completer<DebugConnectionInfo>.sync();
final Completer<void> futureAppStart = Completer<void>.sync();
@ -473,6 +481,7 @@ void main() {
target: 'main.dart',
devtoolsHandler: createNoOpHandler,
analytics: fakeAnalytics,
useImplicitPubspecResolution: true,
);
final Completer<DebugConnectionInfo> futureConnectionInfo = Completer<DebugConnectionInfo>.sync();
final Completer<void> futureAppStart = Completer<void>.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<int?> 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 = <String>{'asset'};
@ -2188,6 +2216,7 @@ flutter:
target: 'main.dart',
devtoolsHandler: createNoOpHandler,
analytics: fakeAnalytics,
useImplicitPubspecResolution: true,
);
(flutterDevice.devFS! as FakeDevFS).shaderPathsToEvict = <String>{'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 = <String>{'asset'};
@ -2281,6 +2312,7 @@ flutter:
devtoolsHandler: createNoOpHandler,
analytics: globals.analytics,
nativeAssetsYamlFile: 'foo.yaml',
useImplicitPubspecResolution: true,
);
final int? result = await residentRunner.run();

View File

@ -61,6 +61,7 @@ void main() {
fs: fileSystem,
fakeFlutterVersion: FakeFlutterVersion(),
),
useImplicitPubspecResolution: true,
);
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
@ -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<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
unawaited(residentWebRunner.run(
@ -169,6 +173,7 @@ void main() {
fs: fileSystem,
fakeFlutterVersion: FakeFlutterVersion(),
),
useImplicitPubspecResolution: true,
);
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
unawaited(residentWebRunner.run(

View File

@ -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: <VmServiceExpectation>[]);
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<DebugConnectionInfo> connectionInfoCompleter =
@ -1169,6 +1177,7 @@ void main() {
analytics: globals.analytics,
systemClock: globals.systemClock,
devtoolsHandler: createNoOpHandler,
useImplicitPubspecResolution: true,
);
final Completer<DebugConnectionInfo> 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,
);
}

View File

@ -98,6 +98,7 @@ void main() {
artifacts: Artifacts.test(),
logger: BufferLogger.test(),
flutterVersion: FakeFlutterVersion(),
useImplicitPubspecResolution: true,
);
logLines = <String>[];
device.getLogReader().logLines.listen(logLines.add);
@ -217,6 +218,7 @@ FlutterTesterDevices setUpFlutterTesterDevices() {
processManager: FakeProcessManager.any(),
fileSystem: MemoryFileSystem.test(),
flutterVersion: FakeFlutterVersion(),
useImplicitPubspecResolution: true,
);
}

View File

@ -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(

View File

@ -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

View File

@ -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<T?> run<T>(FutureOr<T> Function() test, {Map<Type, Generator>? overrides}) {
Future<T?> run<T>(FutureOr<T> Function() test, {Map<Type, Generator>? overrides, bool useImplicitPubspecResolution = true}) {
final Map<Type, Generator> testOverrides = <Type, Generator>{
..._testbedDefaults,
// Add the initial setUp overrides
@ -139,7 +139,7 @@ class Testbed {
}
return null;
});
});
}, useImplicitPubspecResolution: useImplicitPubspecResolution);
}, createHttpClient: (SecurityContext? c) => FakeHttpClient.any());
}
}

View File

@ -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 {