diff --git a/packages/flutter_tools/lib/src/dart/generate_synthetic_packages.dart b/packages/flutter_tools/lib/src/dart/generate_synthetic_packages.dart index fd96d0b82a..18119c66a3 100644 --- a/packages/flutter_tools/lib/src/dart/generate_synthetic_packages.dart +++ b/packages/flutter_tools/lib/src/dart/generate_synthetic_packages.dart @@ -49,7 +49,7 @@ Future generateLocalizationsSyntheticPackage({ // Generate gen_l10n synthetic package only if synthetic-package: true or // synthetic-package is null. final bool? isSyntheticL10nPackage = value as bool?; - if (isSyntheticL10nPackage == false) { + if (isSyntheticL10nPackage == false || isSyntheticL10nPackage == null && featureFlags.isExplicitPackageDependenciesEnabled) { return; } } else if (featureFlags.isExplicitPackageDependenciesEnabled) { diff --git a/packages/flutter_tools/test/general.shard/dart/generate_synthetic_packages_test.dart b/packages/flutter_tools/test/general.shard/dart/generate_synthetic_packages_test.dart index 738fa7d11d..16518d8e3e 100644 --- a/packages/flutter_tools/test/general.shard/dart/generate_synthetic_packages_test.dart +++ b/packages/flutter_tools/test/general.shard/dart/generate_synthetic_packages_test.dart @@ -28,6 +28,14 @@ void main() { return TestFeatureFlags(isExplicitPackageDependenciesEnabled: false); } + // TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default. + // See https://github.com/flutter/flutter/issues/160257 for details. + FeatureFlags enableExplicitPackageDependencies() { + return TestFeatureFlags( + isExplicitPackageDependenciesEnabled: true, + ); + } + testUsingContext('calls buildSystem.build with blank l10n.yaml file', () async { // Project directory setup for gen_l10n logic final MemoryFileSystem fileSystem = MemoryFileSystem.test(); @@ -394,6 +402,42 @@ void main() { ); }); + testUsingContext('synthetic-package omitted with explicit-package-dependencies is a NOP', () async { + // Project directory setup for gen_l10n logic + final MemoryFileSystem fileSystem = MemoryFileSystem.test(); + + // Add generate:true to pubspec.yaml. + final File pubspecFile = fileSystem.file('pubspec.yaml')..createSync(); + final String content = pubspecFile.readAsStringSync().replaceFirst( + '\nflutter:\n', + '\nflutter:\n generate: true\n', + ); + pubspecFile.writeAsStringSync(content); + + final BufferLogger mockBufferLogger = BufferLogger.test(); + final Environment environment = Environment.test( + fileSystem.currentDirectory, + fileSystem: fileSystem, + logger: mockBufferLogger, + artifacts: Artifacts.test(), + processManager: FakeProcessManager.empty(), + ); + final TestBuildSystem buildSystem = TestBuildSystem.all(BuildResult(success: true)); + + await generateLocalizationsSyntheticPackage( + environment: environment, + buildSystem: buildSystem, + buildTargets: const NoOpBuildTargets(), + ); + + expect( + mockBufferLogger.warningText, + isNot(contains('https://flutter.dev/to/flutter-gen-deprecation')), + ); + }, overrides: { + FeatureFlags: enableExplicitPackageDependencies, + }); + testUsingContext('synthetic-package: true with explicit-packages-resolution is an error', () async { // Project directory setup for gen_l10n logic final MemoryFileSystem fileSystem = MemoryFileSystem.test();