Migrate test/commands.shard (mostly) to explicit-package-dependencies. (#160288)

Towards https://github.com/flutter/flutter/issues/160257.

I intentionally skipped `create_test.dart`, as that requires updating
the generated template which uses l10n, a feature changing. I'll do that
in the "big bang" PR that finally enables the feature to avoid getting
us into a bad state.
This commit is contained in:
Matan Lurey 2024-12-16 14:59:16 -08:00 committed by GitHub
parent abe3f4014f
commit f177d8aab4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 69 additions and 5 deletions

View File

@ -16,12 +16,14 @@ import 'package:flutter_tools/src/build_system/targets/web.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/build.dart';
import 'package:flutter_tools/src/commands/build_web.dart';
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/runner/flutter_command.dart';
import 'package:flutter_tools/src/web/compile.dart';
import '../../src/common.dart';
import '../../src/context.dart';
import '../../src/fake_pub_deps.dart';
import '../../src/fakes.dart';
import '../../src/test_build_system.dart';
import '../../src/test_flutter_command_runner.dart';
@ -38,6 +40,16 @@ void main() {
late ProcessManager processManager;
late Artifacts artifacts;
// 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,
// Assumed to be true below.
isWebEnabled: true,
);
}
setUpAll(() {
Cache.flutterRoot = '';
Cache.disableLocking();
@ -384,6 +396,8 @@ void main() {
FileSystem: () => fileSystem,
ProcessManager: () => processManager,
Logger: () => logger,
FeatureFlags: enableExplicitPackageDependencies,
Pub: FakePubWithPrimedDeps.new,
});
}
/// Do test all the deprecated WebRendererModes

View File

@ -10,12 +10,14 @@ import 'package:flutter_tools/src/build_system/build_system.dart';
import 'package:flutter_tools/src/build_system/targets/localizations.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/generate_localizations.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/localizations/gen_l10n_types.dart';
import '../../integration.shard/test_data/basic_project.dart';
import '../../src/common.dart';
import '../../src/context.dart';
import '../../src/fake_process_manager.dart';
import '../../src/fakes.dart';
import '../../src/test_flutter_command_runner.dart';
void main() {
@ -24,6 +26,14 @@ void main() {
late Artifacts artifacts;
late FakeProcessManager processManager;
// 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,
);
}
setUpAll(() {
Cache.disableLocking();
});
@ -399,8 +409,8 @@ format: true
command: <String>[
'Artifact.engineDartBinary',
'format',
'/.dart_tool/flutter_gen/gen_l10n/app_localizations_en.dart',
'/.dart_tool/flutter_gen/gen_l10n/app_localizations.dart',
'/lib/l10n/app_localizations_en.dart',
'/lib/l10n/app_localizations.dart',
]
)
);
@ -413,11 +423,13 @@ format: true
);
await buildTarget.build(environment);
final Directory outputDirectory = fileSystem.directory(fileSystem.path.join('.dart_tool', 'flutter_gen', 'gen_l10n'));
final Directory outputDirectory = fileSystem.directory(fileSystem.path.join('lib', 'l10n'));
expect(outputDirectory.existsSync(), true);
expect(outputDirectory.childFile('app_localizations_en.dart').existsSync(), true);
expect(outputDirectory.childFile('app_localizations.dart').existsSync(), true);
expect(processManager, hasNoRemainingExpectations);
}, overrides: <Type, Generator>{
FeatureFlags: enableExplicitPackageDependencies,
});
testUsingContext('nullable-getter defaults to true', () async {

View File

@ -8,12 +8,15 @@ import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/packages.dart';
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/runner/flutter_command.dart';
import 'package:test/fake.dart';
import '../../src/context.dart';
import '../../src/fake_pub_deps.dart';
import '../../src/fakes.dart';
import '../../src/test_flutter_command_runner.dart';
const String minimalV2EmbeddingManifest = r'''
@ -31,6 +34,15 @@ void main() {
late FileSystem fileSystem;
late FakePub pub;
// TODO(matanlurey): Remove after `flutter_gen` is removed.
// See https://github.com/flutter/flutter/issues/102983 for details.
FeatureFlags disableExplicitPackageDependencies() {
return TestFeatureFlags(
// ignore: avoid_redundant_argument_values
isExplicitPackageDependenciesEnabled: false,
);
}
setUp(() {
Cache.disableLocking();
fileSystem = MemoryFileSystem.test();
@ -262,6 +274,7 @@ void main() {
Pub: () => pub,
ProcessManager: () => FakeProcessManager.any(),
FileSystem: () => fileSystem,
FeatureFlags: disableExplicitPackageDependencies,
});
}
@ -292,4 +305,9 @@ class FakePub extends Fake implements Pub {
..writeAsStringSync('{"configVersion":2,"packages":[]}');
}
}
@override
Future<Map<String, Object?>> deps(FlutterProject project) {
return FakePubWithPrimedDeps().deps(project);
}
}

View File

@ -30,6 +30,23 @@ import '../../src/test_flutter_command_runner.dart';
void main() {
late FakeStdio mockStdio;
// 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,
);
}
// TODO(matanlurey): Remove after `flutter_gen` is removed.
// See https://github.com/flutter/flutter/issues/102983 for details.
FeatureFlags disableExplicitPackageDependencies() {
return TestFeatureFlags(
// ignore: avoid_redundant_argument_values
isExplicitPackageDependenciesEnabled: false,
);
}
setUp(() {
mockStdio = FakeStdio()..stdout.terminalColumns = 80;
@ -328,6 +345,7 @@ flutter:
botDetector: globals.botDetector,
platform: globals.platform,
),
FeatureFlags: disableExplicitPackageDependencies,
});
testUsingContext('get fetches packages for a workspace', () async {
@ -593,7 +611,7 @@ workspace:
await runCommandIn(projectPath, 'get');
expectDependenciesResolved(projectPath);
expectModulePluginInjected(projectPath, includeLegacyPluginsList: true);
expectModulePluginInjected(projectPath, includeLegacyPluginsList: false);
}, overrides: <Type, Generator>{
Stdio: () => mockStdio,
Pub: () => Pub.test(
@ -605,6 +623,7 @@ workspace:
platform: globals.platform,
stdio: mockStdio,
),
FeatureFlags: enableExplicitPackageDependencies,
});
testUsingContext('get fetches packages and injects plugin in plugin project', () async {
@ -623,7 +642,7 @@ workspace:
await runCommandIn(exampleProjectPath, 'get');
expectDependenciesResolved(exampleProjectPath);
expectPluginInjected(exampleProjectPath, includeLegacyPluginsList: true);
expectPluginInjected(exampleProjectPath, includeLegacyPluginsList: false);
}, overrides: <Type, Generator>{
Stdio: () => mockStdio,
Pub: () => Pub.test(
@ -635,6 +654,7 @@ workspace:
platform: globals.platform,
stdio: mockStdio,
),
FeatureFlags: enableExplicitPackageDependencies,
});
testUsingContext('get explicit-packages-resolution omits ".flutter-plugins"', () async {