Fix a bug to skip flutter_gen when synthetic packages are disabled (#160367)

Without this bug fix, when flipping the flag a lot of things blow up :)

(https://github.com/flutter/flutter/pull/160289 as an example of needing
this)
This commit is contained in:
Matan Lurey 2024-12-16 11:33:34 -08:00 committed by GitHub
parent 1c52436853
commit daaceacb30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 45 additions and 1 deletions

View File

@ -49,7 +49,7 @@ Future<void> 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) {

View File

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