diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart index 2c070a600a..f71c824017 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart @@ -29,6 +29,7 @@ import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_build_system.dart'; import '../../src/test_flutter_command_runner.dart'; @@ -86,8 +87,8 @@ void main() { // Sets up the minimal mock project files necessary to look like a Flutter project. void createCoreMockProjectFiles() { - fileSystem.file('pubspec.yaml').createSync(); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync('name: my_app'); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); } @@ -258,10 +259,7 @@ void main() { osUtils: FakeOperatingSystemUtils(), ); fileSystem.file('pubspec.yaml').createSync(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); final bool supported = diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart index a1624d61e5..01574bd24f 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart @@ -26,6 +26,7 @@ import '../../src/context.dart'; import '../../src/fake_process_manager.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_build_system.dart'; import '../../src/test_flutter_command_runner.dart'; @@ -93,8 +94,8 @@ void main() { // Sets up the minimal mock project files necessary to look like a Flutter project. void createCoreMockProjectFiles() { - fileSystem.file('pubspec.yaml').createSync(); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync('name: my_app'); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); } @@ -287,10 +288,7 @@ void main() { osUtils: FakeOperatingSystemUtils(), ); fileSystem.file('pubspec.yaml').createSync(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); final bool supported = diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart index 0d5a130c55..4accd0d3d8 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_linux_test.dart @@ -23,6 +23,7 @@ import 'package:unified_analytics/unified_analytics.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_build_system.dart'; import '../../src/test_flutter_command_runner.dart'; @@ -60,7 +61,7 @@ void main() { // Creates the mock files necessary to look like a Flutter project. void setUpMockCoreProjectFiles() { fileSystem.file('pubspec.yaml').createSync(); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); } @@ -685,10 +686,7 @@ project(runner LANGUAGES CXX) set(BINARY_NAME "fizz_bar") '''); fileSystem.file('pubspec.yaml').createSync(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FlutterProject flutterProject = FlutterProject.fromDirectoryTest( fileSystem.currentDirectory, ); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart index 2802a2b791..7d9db7d0ac 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart @@ -27,6 +27,7 @@ import '../../src/context.dart'; import '../../src/fake_process_manager.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_build_system.dart'; import '../../src/test_flutter_command_runner.dart'; @@ -75,8 +76,9 @@ void main() { // Sets up the minimal mock project files necessary to look like a Flutter project. void createCoreMockProjectFiles() { - fileSystem.file('pubspec.yaml').createSync(); - fileSystem.file('.dart_tool/package_config.json').createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync('name: my_app'); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); + fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart index 2ab0988736..6b2c933f10 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart @@ -20,6 +20,7 @@ import 'package:flutter_tools/src/web/compile.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_build_system.dart'; import '../../src/test_flutter_command_runner.dart'; @@ -39,7 +40,7 @@ void main() { fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync('name: foo\n'); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + writePackageConfigFile(mainLibName: 'foo', directory: fileSystem.currentDirectory); fileSystem.file(fileSystem.path.join('web', 'index.html')).createSync(recursive: true); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); logger = BufferLogger.test(); @@ -505,27 +506,11 @@ void setupFileSystemForEndToEndTest(FileSystem fileSystem) { } // Project files. - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [ - { - "name": "foo", - "rootUri": "../", - "packageUri": "lib/", - "languageVersion": "3.2" - }, - { - "name": "fizz", - "rootUri": "../bar", - "packageUri": "lib/", - "languageVersion": "3.2" - } - ], - "configVersion": 2 -} -'''); + writePackageConfigFile( + directory: fileSystem.currentDirectory, + mainLibName: 'foo', + packages: {'fizz': 'bar'}, + ); fileSystem.file('pubspec.yaml').writeAsStringSync(''' name: foo diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart index cae29287ce..363b02d214 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_windows_test.dart @@ -19,6 +19,7 @@ import 'package:unified_analytics/unified_analytics.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; const String flutterRoot = r'C:\flutter'; @@ -62,7 +63,7 @@ void main() { // Creates the mock files necessary to look like a Flutter project. void setUpMockCoreProjectFiles() { fileSystem.file('pubspec.yaml').createSync(); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart index fd7d835e23..a45c1d58f0 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart @@ -19,6 +19,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; void main() { @@ -273,10 +274,8 @@ FlutterProject setupProjectUnderTest(Directory currentDirectory, bool setupXcode .createSync(recursive: true); } projectUnderTest.dartTool.createSync(recursive: true); - projectUnderTest.directory - .childDirectory('.dart_tool') - .childFile('package_config.jon') - .createSync(recursive: true); + writePackageConfigFile(directory: projectUnderTest.directory, mainLibName: 'my_app'); + projectUnderTest.android.ephemeralDirectory.createSync(recursive: true); projectUnderTest.ios.ephemeralDirectory.createSync(recursive: true); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart index 670dee308f..3d6395e441 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart @@ -19,6 +19,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; import '../../src/testbed.dart'; @@ -39,10 +40,7 @@ class FakePub extends Fake implements Pub { bool shouldSkipThirdPartyGenerator = true, PubOutputMode outputMode = PubOutputMode.all, }) async { - project.directory - .childDirectory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: project.directory, mainLibName: 'my_app'); if (offline) { calledGetOffline += 1; } else { diff --git a/packages/flutter_tools/test/commands.shard/hermetic/pub_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/pub_test.dart index 477c7cebf3..d648c0e6d3 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/pub_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/pub_test.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:convert'; + import 'package:args/command_runner.dart'; import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/file_system.dart'; @@ -18,6 +20,7 @@ import 'package:unified_analytics/unified_analytics.dart'; import '../../src/context.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; const String minimalV2EmbeddingManifest = r''' @@ -48,7 +51,7 @@ void main() { setUp(() { Cache.disableLocking(); fileSystem = MemoryFileSystem.test(); - pub = FakePub(fileSystem); + pub = FakePub(); logger = BufferLogger.test(); }); @@ -73,7 +76,7 @@ void main() { testUsingContext( 'pub get usage values are resilient to missing package config files before running "pub get"', () async { - fileSystem.currentDirectory.childFile('pubspec.yaml').createSync(); + fileSystem.currentDirectory.childFile('pubspec.yaml').writeAsStringSync('name: my_app'); fileSystem.currentDirectory.childFile('.flutter-plugins').createSync(); fileSystem.currentDirectory.childFile('.flutter-plugins-dependencies').createSync(); fileSystem.currentDirectory.childDirectory('android').childFile('AndroidManifest.xml') @@ -152,8 +155,19 @@ void main() { await commandRunner.run(['get', '--directory=${targetDirectory.path}']); final FlutterProject rootProject = FlutterProject.fromDirectory(targetDirectory); final File packageConfigFile = rootProject.dartTool.childFile('package_config.json'); + expect(packageConfigFile.existsSync(), true); - expect(packageConfigFile.readAsStringSync(), '{"configVersion":2,"packages":[]}'); + expect(json.decode(packageConfigFile.readAsStringSync()), { + 'configVersion': 2, + 'packages': [ + { + 'name': 'my_app', + 'rootUri': '../', + 'packageUri': 'lib/', + 'languageVersion': '3.7', + }, + ], + }); }, overrides: { Pub: () => pub, @@ -328,9 +342,8 @@ void main() { } class FakePub extends Fake implements Pub { - FakePub(this.fileSystem); + FakePub(); - final FileSystem fileSystem; List? expectedArguments; @override @@ -347,12 +360,7 @@ class FakePub extends Fake implements Pub { expect(arguments, expectedArguments); } if (project != null) { - fileSystem - .directory(project.directory) - .childDirectory('.dart_tool') - .childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync('{"configVersion":2,"packages":[]}'); + writePackageConfigFile(directory: project.directory, mainLibName: 'my_app'); } } 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 eff680ba97..7841c03abb 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -35,6 +35,7 @@ import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_devices.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; void main() { @@ -174,15 +175,9 @@ void main() { artifacts = Artifacts.test(); fs = MemoryFileSystem.test(); - fs.currentDirectory.childFile('pubspec.yaml').writeAsStringSync('name: flutter_app'); - fs.currentDirectory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [], - "configVersion": 2 -} -'''); + fs.currentDirectory.childFile('pubspec.yaml').writeAsStringSync('name: my_app'); + writePackageConfigFile(directory: fs.currentDirectory, mainLibName: 'my_app'); + final Directory libDir = fs.currentDirectory.childDirectory('lib'); libDir.createSync(); final File mainFile = libDir.childFile('main.dart'); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart index ca84eaac9b..175ed0d31f 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'dart:async'; -import 'dart:convert'; import 'package:args/command_runner.dart'; import 'package:file/memory.dart'; @@ -37,66 +36,16 @@ import '../../src/context.dart'; import '../../src/fake_devices.dart'; import '../../src/fake_vm_services.dart'; import '../../src/logging_logger.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; -final String _flutterToolsPackageConfigContents = json.encode({ - 'configVersion': 2, - 'packages': >[ - { - 'name': 'ffi', - 'rootUri': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/ffi-2.1.2', - 'packageUri': 'lib/', - 'languageVersion': '3.3', - }, - { - 'name': 'test', - 'rootUri': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/test-1.24.9', - 'packageUri': 'lib/', - 'languageVersion': '3.0', - }, - { - 'name': 'test_api', - 'rootUri': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/test_api-0.6.1', - 'packageUri': 'lib/', - 'languageVersion': '3.0', - }, - { - 'name': 'test_core', - 'rootUri': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/test_core-0.5.9', - 'packageUri': 'lib/', - 'languageVersion': '3.0', - }, - ], - 'generated': '2021-02-24T07:55:20.084834Z', - 'generator': 'pub', - 'generatorVersion': '2.13.0-68.0.dev', -}); const String _pubspecContents = ''' +name: my_app dev_dependencies: flutter_test: sdk: flutter integration_test: sdk: flutter'''; -final String _packageConfigContents = json.encode({ - 'configVersion': 2, - 'packages': >[ - { - 'name': 'test_api', - 'rootUri': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19', - 'packageUri': 'lib/', - 'languageVersion': '2.12', - }, - { - 'name': 'integration_test', - 'rootUri': 'file:///path/to/flutter/packages/integration_test', - 'packageUri': 'lib/', - 'languageVersion': '2.12', - }, - ], - 'generated': '2021-02-24T07:55:20.084834Z', - 'generator': 'pub', - 'generatorVersion': '2.13.0-68.0.dev', -}); void main() { Cache.disableLocking(); @@ -111,20 +60,30 @@ void main() { final Directory package = fs.directory('package'); package.childFile('pubspec.yaml').createSync(recursive: true); package.childFile('pubspec.yaml').writeAsStringSync(_pubspecContents); - (package.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true)).writeAsStringSync(_packageConfigContents); + writePackageConfigFile( + directory: package, + packages: { + 'test_api': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19', + 'integration_test': 'file:///path/to/flutter/packages/integration_test', + }, + mainLibName: 'my_app', + ); package.childDirectory('test').childFile('some_test.dart').createSync(recursive: true); package .childDirectory('integration_test') .childFile('some_integration_test.dart') .createSync(recursive: true); - final File flutterToolsPackageConfigFile = fs - .directory(fs.path.join(getFlutterRoot(), 'packages', 'flutter_tools')) - .childDirectory('.dart_tool') - .childFile('package_config.json'); - flutterToolsPackageConfigFile.createSync(recursive: true); - flutterToolsPackageConfigFile.writeAsStringSync(_flutterToolsPackageConfigContents); + writePackageConfigFile( + directory: fs.directory(fs.path.join(getFlutterRoot(), 'packages', 'flutter_tools')), + packages: { + 'ffi': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/ffi-2.1.2', + 'test': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/test-1.24.9', + 'test_api': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/test_api-0.6.1', + 'test_core': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dev/test_core-0.5.9', + }, + mainLibName: 'my_app', + ); fs.currentDirectory = package.path; @@ -161,26 +120,14 @@ dev_dependencies: flutter_test: sdk: flutter '''); - fs - .directory('.dart_tool') - .childFile('package_config.json') - .writeAsStringSync( - json.encode({ - 'configVersion': 2, - 'packages': >[ - { - 'name': 'test_api', - 'rootUri': - 'file:///path/to/pubcache/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19', - 'packageUri': 'lib/', - 'languageVersion': '2.12', - }, - ], - 'generated': '2021-02-24T07:55:20.084834Z', - 'generator': 'pub', - 'generatorVersion': '2.13.0-68.0.dev', - }), - ); + writePackageConfigFile( + directory: fs.currentDirectory, + packages: { + 'test_api': 'file:///path/to/pubcache/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19', + }, + mainLibName: 'my_app', + ); + final FakePackageTest fakePackageTest = FakePackageTest(); final TestCommand testCommand = TestCommand(testWrapper: fakePackageTest); final CommandRunner commandRunner = createTestCommandRunner(testCommand); @@ -361,7 +308,7 @@ dev_dependencies: testUsingContext( 'Coverage provides current library name to Coverage Collector by default', () async { - const String currentPackageName = ''; + const String currentPackageName = 'my_app'; final FakeVmServiceHost fakeVmServiceHost = FakeVmServiceHost( requests: [ FakeVmServiceRequest( @@ -1210,6 +1157,7 @@ const List packageTestArgs = [ fs.file('vanilla.txt').writeAsStringSync('vanilla'); fs.file('orange.txt').writeAsStringSync('orange'); fs.file('pubspec.yaml').writeAsStringSync(''' +name: my_app flutter: assets: - path: vanilla.txt @@ -1251,6 +1199,7 @@ dev_dependencies: fs.file('vanilla.txt').writeAsStringSync('vanilla'); fs.file('flavorless.txt').writeAsStringSync('flavorless'); fs.file('pubspec.yaml').writeAsStringSync(''' +name: my_app flutter: assets: - path: vanilla.txt @@ -1321,6 +1270,7 @@ dev_dependencies: final FakeFlutterTestRunner testRunner = FakeFlutterTestRunner(0); fs.file('asset.txt').writeAsStringSync('1'); fs.file('pubspec.yaml').writeAsStringSync(''' +name: my_app flutter: assets: - asset.txt diff --git a/packages/flutter_tools/test/commands.shard/hermetic/update_packages_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/update_packages_test.dart index d410aec0ad..65ef2440f4 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/update_packages_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/update_packages_test.dart @@ -14,6 +14,7 @@ import 'package:test/fake.dart'; import 'package:yaml/yaml.dart'; import '../../src/context.dart'; +import '../../src/package_config.dart'; import '../../src/test_flutter_command_runner.dart'; // An example pubspec.yaml from flutter, not necessary for it to be up to date. @@ -116,7 +117,7 @@ void main() { ..writeAsStringSync(kExamplesPubspecYaml); flutter.childFile('pubspec.yaml').writeAsStringSync(kFlutterPubspecYaml); Cache.flutterRoot = flutterSdk.absolute.path; - pub = FakePub(fileSystem); + pub = FakePub(); processManager = FakeProcessManager.empty(); }); @@ -367,9 +368,8 @@ void main() { } class FakePub extends Fake implements Pub { - FakePub(this.fileSystem); + FakePub(); - final FileSystem fileSystem; final List pubGetDirectories = []; final List pubBatchDirectories = []; final List pubspecYamls = []; @@ -405,9 +405,7 @@ packages: sdks: dart: ">=2.14.0 <3.0.0" '''); - fileSystem.currentDirectory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync('{"configVersion":2,"packages":[]}'); + writePackageConfigFile(directory: project.directory, mainLibName: 'my_app'); } @override diff --git a/packages/flutter_tools/test/commands.shard/hermetic/widget_preview/widget_preview_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/widget_preview/widget_preview_test.dart index df56562bdb..ab539cb703 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/widget_preview/widget_preview_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/widget_preview/widget_preview_test.dart @@ -19,6 +19,7 @@ import 'package:test_api/fake.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; void main() { group('WidgetPreviewStartCommand', () { @@ -174,19 +175,6 @@ flutter: - deferredComponentArg - path: package/deferredComponentUri'''; - static const String basicPackageConfig = ''' -{ - "configVersion": 2, - "packages": [ - { - "name": "test", - "rootUri": "fileSystem.currentDirectory.path", - "packageUri": "lib/" - } - ] -} -'''; - final String projectRoot; final FileSystem fileSystem; final Logger logger; @@ -212,10 +200,9 @@ flutter: @override late final File packageConfig = () { - final File file = fileSystem - .directory(fileSystem.path.join(projectRoot, '.dart_tool')) - .childFile('package_config.json')..createSync(recursive: true); - file.writeAsStringSync(basicPackageConfig); - return file; + return writePackageConfigFile( + directory: fileSystem.directory(projectRoot), + mainLibName: 'my_app', + ); }(); } diff --git a/packages/flutter_tools/test/general.shard/application_package_test.dart b/packages/flutter_tools/test/general.shard/application_package_test.dart index f8d845914c..8bec511c01 100644 --- a/packages/flutter_tools/test/general.shard/application_package_test.dart +++ b/packages/flutter_tools/test/general.shard/application_package_test.dart @@ -24,6 +24,7 @@ import '../src/common.dart'; import '../src/context.dart'; import '../src/fake_process_manager.dart'; import '../src/fakes.dart'; +import '../src/package_config.dart'; void main() { group('Apk with partial Android SDK works', () { @@ -982,9 +983,7 @@ class FakeAndroidSdkVersion extends Fake implements AndroidSdkVersion { Future aModuleProject() async { final Directory directory = globals.fs.directory('module_project'); - directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync('{"configVersion":2,"packages":[]}'); + writePackageConfigFile(directory: directory, mainLibName: 'my_app'); directory.childFile('pubspec.yaml').writeAsStringSync(''' name: my_module flutter: diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_flavors_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_flavors_test.dart index 123ceee620..62e23ec802 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_flavors_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_flavors_test.dart @@ -12,6 +12,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/project.dart'; import '../src/common.dart'; +import '../src/package_config.dart'; void main() { Future buildBundleWithFlavor( @@ -50,10 +51,8 @@ void main() { final BufferLogger logger = BufferLogger.test(); final FakePlatform platform = FakePlatform(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'example'); + fileSystem .file(fileSystem.path.join('assets', 'common', 'image.png')) .createSync(recursive: true); @@ -129,10 +128,8 @@ flutter: ); final BufferLogger logger = BufferLogger.test(); final FakePlatform platform = FakePlatform(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'example'); + fileSystem.file(fileSystem.path.join('assets', 'unflavored.png')).createSync(recursive: true); fileSystem .file(fileSystem.path.join('assets', 'vanillaOrange.png')) @@ -174,10 +171,7 @@ flutter: ); final BufferLogger logger = BufferLogger.test(); final FakePlatform platform = FakePlatform(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'example'); fileSystem.file(fileSystem.path.join('vanilla', 'vanilla.png')).createSync(recursive: true); fileSystem .file(fileSystem.path.join('vanilla', 'flavorless.png')) @@ -217,10 +211,7 @@ flutter: ); final BufferLogger logger = BufferLogger.test(); final FakePlatform platform = FakePlatform(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'example'); fileSystem.file('orange.png').createSync(recursive: true); fileSystem.file('pubspec.yaml') ..createSync() @@ -258,10 +249,7 @@ flutter: ); final BufferLogger logger = BufferLogger.test(); final FakePlatform platform = FakePlatform(); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'example'); fileSystem .file(fileSystem.path.join('vanilla', 'actually-strawberry.png')) .createSync(recursive: true); diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart index c587186117..1647585e35 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_package_fonts_test.dart @@ -14,6 +14,7 @@ import 'package:flutter_tools/src/globals.dart' as globals; import '../src/common.dart'; import '../src/context.dart'; +import '../src/package_config.dart'; void main() { String fixPath(String path) { @@ -47,26 +48,6 @@ $fontsSection '''); } - void writePackageConfigFile(Map packages) { - globals.fs.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync( - json.encode({ - 'packages': [ - ...packages.entries.map((MapEntry entry) { - return { - 'name': entry.key, - 'rootUri': '../${entry.value}', - 'packageUri': 'lib/', - 'languageVersion': '3.2', - }; - }), - ], - 'configVersion': 2, - }), - ); - } - Future buildAndVerifyFonts( List localFonts, List packageFonts, @@ -116,8 +97,13 @@ $fontsSection testUsingContext( 'App includes neither font manifest nor fonts when no defines fonts', () async { + final Map deps = {'test_package': 'p/p/'}; writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: deps, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); final AssetBundle bundle = AssetBundleFactory.instance.createBundle(); @@ -146,8 +132,14 @@ $fontsSection fonts: - asset: packages/test_package/bar '''; - writePubspecFile('pubspec.yaml', 'test', fontsSection: fontsSection); - writePackageConfigFile({'test_package': 'p/p/'}); + writePubspecFile('pubspec.yaml', 'my_app', fontsSection: fontsSection); + + writePackageConfigFile( + directory: globals.fs.currentDirectory, + + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); const String font = 'bar'; @@ -177,8 +169,13 @@ $fontsSection - asset: packages/test_package/bar - asset: a/bar '''; - writePubspecFile('pubspec.yaml', 'test', fontsSection: fontsSection); - writePackageConfigFile({'test_package': 'p/p/'}); + writePubspecFile('pubspec.yaml', 'my_app', fontsSection: fontsSection); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); const String packageFont = 'bar'; @@ -202,8 +199,14 @@ $fontsSection testUsingContext( 'App uses package font with own font file', () async { + final Map deps = {'test_package': 'p/p/'}; writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + + packages: deps, + mainLibName: 'my_app', + ); const String fontsSection = ''' - family: foo fonts: @@ -233,8 +236,17 @@ $fontsSection testUsingContext( 'App uses package font with font file from another package', () async { + final Map deps = { + 'test_package': 'p/p/', + 'test_package2': 'p2/p/', + }; writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/', 'test_package2': 'p2/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + + packages: deps, + mainLibName: 'test', + ); const String fontsSection = ''' - family: foo fonts: @@ -265,8 +277,14 @@ $fontsSection testUsingContext( 'App uses package font with properties and own font file', () async { + final Map deps = {'test_package': 'p/p/'}; writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + + packages: deps, + mainLibName: 'my_app', + ); const String pubspec = ''' - family: foo @@ -298,13 +316,19 @@ $fontsSection testUsingContext( 'App uses local font and package font with own font file.', () async { + final Map deps = {'test_package': 'p/p/'}; const String fontsSection = ''' - family: foo fonts: - asset: a/bar '''; writePubspecFile('pubspec.yaml', 'test', fontsSection: fontsSection); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: deps, + mainLibName: 'test', + ); + writePubspecFile('p/p/pubspec.yaml', 'test_package', fontsSection: fontsSection); const String font = 'a/bar'; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart index 79820e62ba..b015bb200b 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart @@ -16,6 +16,7 @@ import 'package:standard_message_codec/standard_message_codec.dart'; import '../src/common.dart'; import '../src/context.dart'; +import '../src/package_config.dart'; void main() { String fixPath(String path) { @@ -71,26 +72,6 @@ $assetsSection '''); } - void writePackageConfigFile(Map packages) { - globals.fs.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync( - json.encode({ - 'packages': [ - ...packages.entries.map((MapEntry entry) { - return { - 'name': entry.key, - 'rootUri': '../${entry.value}', - 'packageUri': 'lib/', - 'languageVersion': '3.2', - }; - }), - ], - 'configVersion': 2, - }), - ); - } - Map assetManifestBinToJson(Map manifest) { List convertList(List variants) => variants.map((Object variant) => (variant as Map)['asset']!).toList(); @@ -159,7 +140,11 @@ $assetsSection 'No assets are bundled when the package has no assets', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); final AssetBundle bundle = AssetBundleFactory.instance.createBundle(); @@ -190,7 +175,11 @@ $assetsSection 'No assets are bundled when the package has an asset that is not listed', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); final List assets = ['a/foo']; @@ -225,7 +214,11 @@ $assetsSection 'asset its pubspec', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); final List assets = ['a/foo']; writePubspecFile('p/p/pubspec.yaml', 'test_package', assets: assets); @@ -252,7 +245,11 @@ $assetsSection () async { final List assetEntries = ['packages/test_package/a/foo']; writePubspecFile('pubspec.yaml', 'test', assets: assetEntries); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); final List assets = ['a/foo']; @@ -276,7 +273,11 @@ $assetsSection 'has an asset and a variant, and lists the asset in its pubspec', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + packages: {'test_package': 'p/p/'}, + mainLibName: 'my_app', + ); writePubspecFile('p/p/pubspec.yaml', 'test_package', assets: ['a/foo', 'a/bar']); final List assets = ['a/foo', 'a/2x/foo', 'a/bar']; @@ -305,7 +306,11 @@ $assetsSection 'has an asset and a variant, and the app lists the asset in its pubspec', () async { writePubspecFile('pubspec.yaml', 'test', assets: ['packages/test_package/a/foo']); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); final List assets = ['a/foo', 'a/2x/foo']; @@ -331,7 +336,11 @@ $assetsSection 'two assets in its pubspec', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assets = ['a/foo', 'a/bar']; writePubspecFile('p/p/pubspec.yaml', 'test_package', assets: assets); @@ -362,7 +371,11 @@ $assetsSection 'packages/test_package/a/bar', ]; writePubspecFile('pubspec.yaml', 'test', assets: assetEntries); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assets = ['a/foo', 'a/bar']; writePubspecFile('p/p/pubspec.yaml', 'test_package'); @@ -389,7 +402,11 @@ $assetsSection 'Two assets are bundled when two packages each have and list an asset their pubspec', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/', 'test_package2': 'p2/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/', 'test_package2': 'p2/p/'}, + ); writePubspecFile('p/p/pubspec.yaml', 'test_package', assets: ['a/foo']); writePubspecFile('p2/p/pubspec.yaml', 'test_package2', assets: ['a/foo']); @@ -427,7 +444,11 @@ $assetsSection 'packages/test_package2/a/foo', ]; writePubspecFile('pubspec.yaml', 'test', assets: assetEntries); - writePackageConfigFile({'test_package': 'p/p/', 'test_package2': 'p2/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/', 'test_package2': 'p2/p/'}, + ); writePubspecFile('p/p/pubspec.yaml', 'test_package'); writePubspecFile('p2/p/pubspec.yaml', 'test_package2'); @@ -462,7 +483,11 @@ $assetsSection 'listing in its pubspec an asset from another package', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/', 'test_package2': 'p2/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/', 'test_package2': 'p2/p/'}, + ); writePubspecFile( 'p/p/pubspec.yaml', 'test_package', @@ -492,7 +517,11 @@ $assetsSection 'Flavored assets are bundled when the app depends on a package', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); writePubspecFile( 'p/p/pubspec.yaml', 'test_package', @@ -526,7 +555,11 @@ $assetsSection 'Asset paths can contain URL reserved characters', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assets = ['a/foo', 'a/foo [x]']; writePubspecFile('p/p/pubspec.yaml', 'test_package', assets: assets); @@ -553,7 +586,11 @@ $assetsSection 'Asset paths can contain URL reserved characters', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assets = ['a/foo', 'a/foo [x]']; writePubspecFile('p/p/pubspec.yaml', 'test_package', assets: assets); @@ -581,7 +618,11 @@ $assetsSection 'Two assets are bundled when scanning their directory', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assetsOnDisk = ['a/foo', 'a/bar']; final List assetsOnManifest = ['a/']; @@ -610,7 +651,11 @@ $assetsSection 'Two assets are bundled when listing one and scanning second directory', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assetsOnDisk = ['a/foo', 'abc/bar']; final List assetOnManifest = ['a/foo', 'abc/']; @@ -639,7 +684,11 @@ $assetsSection 'One asset is bundled with variant, scanning wrong directory', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assetsOnDisk = ['a/foo', 'a/b/foo', 'a/bar']; final List assetOnManifest = [ @@ -672,7 +721,11 @@ $assetsSection 'One asset is bundled with variant, scanning directory', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assetsOnDisk = ['a/foo', 'a/2x/foo']; final List assetOnManifest = ['a/']; @@ -698,7 +751,11 @@ $assetsSection 'No asset is bundled with variant, no assets or directories are listed', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assetsOnDisk = ['a/foo', 'a/2x/foo']; final List assetOnManifest = []; @@ -722,7 +779,11 @@ $assetsSection 'Expect error generating manifest, wrong non-existing directory is listed', () async { writePubspecFile('pubspec.yaml', 'test'); - writePackageConfigFile({'test_package': 'p/p/'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'test_package': 'p/p/'}, + ); final List assetOnManifest = ['c/']; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_test.dart index c1d3fb4c0e..5fc804431c 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_test.dart @@ -23,34 +23,11 @@ import 'package:standard_message_codec/standard_message_codec.dart'; import '../src/common.dart'; import '../src/context.dart'; +import '../src/package_config.dart'; void main() { const String shaderLibDir = '/./shader_lib'; - File createPackageConfig( - FileSystem fileSystem, { - Map packages = const {}, - }) { - final File file = fileSystem.directory('.dart_tool').childFile('package_config.json'); - file.createSync(recursive: true); - file.writeAsStringSync( - json.encode({ - 'packages': [ - ...packages.entries.map((MapEntry entry) { - return { - 'name': entry.key, - 'rootUri': '../${entry.value}', - 'packageUri': 'lib/', - 'languageVersion': '3.2', - }; - }), - ], - 'configVersion': 2, - }), - ); - return file; - } - group('AssetBundle.build (using context)', () { late FileSystem testFileSystem; late Platform platform; @@ -115,9 +92,9 @@ void main() { testUsingContext( 'wildcard directories do not include subdirectories', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file('pubspec.yaml').writeAsStringSync(''' -name: test +name: my_app dependencies: flutter: sdk: flutter @@ -164,14 +141,18 @@ flutter: testUsingContext( 'wildcard directories are updated when filesystem changes', () async { - final File packageFile = createPackageConfig(globals.fs); + final File packageFile = writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + ); + globals.fs .file(globals.fs.path.join('assets', 'foo', 'bar.txt')) .createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/ @@ -224,12 +205,15 @@ flutter: globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/ '''); - final File packageConfig = createPackageConfig(globals.fs); + final File packageConfig = writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + ); final AssetBundle bundle = AssetBundleFactory.instance.createBundle(); await bundle.build(packageConfigPath: '.dart_tool/package_config.json'); expect( @@ -250,7 +234,7 @@ flutter: globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example''') +name: my_app''') ..setLastModifiedSync(modifiedTime); // touch the package config to make sure its change time is after pubspec.yaml's @@ -292,12 +276,12 @@ name: example''') globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/ '''); - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); final AssetBundle bundle = AssetBundleFactory.instance.createBundle(); await bundle.build(packageConfigPath: '.dart_tool/package_config.json'); expect( @@ -322,7 +306,7 @@ flutter: testUsingContext( 'deferred assets are parsed', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs .file(globals.fs.path.join('assets', 'foo', 'bar.txt')) .createSync(recursive: true); @@ -335,7 +319,7 @@ flutter: globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/ @@ -380,7 +364,7 @@ flutter: testUsingContext( 'deferred assets are parsed regularly when splitDeferredAssets Disabled', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs .file(globals.fs.path.join('assets', 'foo', 'bar.txt')) .createSync(recursive: true); @@ -393,7 +377,7 @@ flutter: globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/ @@ -430,7 +414,10 @@ flutter: testUsingContext( 'deferred assets wildcard parsed', () async { - final File packageFile = createPackageConfig(globals.fs); + final File packageFile = writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + ); globals.fs .file(globals.fs.path.join('assets', 'foo', 'bar.txt')) .createSync(recursive: true); @@ -443,7 +430,7 @@ flutter: globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/ @@ -523,11 +510,11 @@ flutter: userMessages: UserMessages(), ); - createPackageConfig(fileSystem); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - https://mywebsite.com/images/ @@ -577,7 +564,7 @@ flutter: fileSystem: fileSystem, userMessages: UserMessages(), ); - createPackageConfig(fileSystem); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' @@ -612,11 +599,11 @@ flutter: final BufferLogger logger = BufferLogger.test(); final FakePlatform platform = FakePlatform(); - createPackageConfig(fileSystem); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - path: my-asset.txt @@ -649,7 +636,7 @@ flutter: expect(bundle.entries['my-asset.txt']!.content.isModified, isFalse); fileSystem.file('pubspec.yaml').writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - path: my-asset.txt @@ -717,9 +704,9 @@ flutter: testUsingContext( 'pubspec contains an asset', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file('pubspec.yaml').writeAsStringSync(r''' -name: test +name: my_app dependencies: flutter: sdk: flutter @@ -809,12 +796,12 @@ flutter: testUsingContext( 'does not unnecessarily recreate asset manifest, font manifest, license', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file(globals.fs.path.join('assets', 'foo', 'bar.txt')).createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/foo/bar.txt @@ -843,12 +830,12 @@ assets: 'inserts dummy file into additionalDependencies when ' 'wildcards are used', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file(globals.fs.path.join('assets', 'bar.txt')).createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/ @@ -872,12 +859,12 @@ flutter: 'Does not insert dummy file into additionalDependencies ' 'when wildcards are not used', () async { - createPackageConfig(globals.fs); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file(globals.fs.path.join('assets', 'bar.txt')).createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - assets/bar.txt @@ -920,11 +907,11 @@ flutter: testUsingContext( 'Including a shader triggers the shader compiler', () async { - createPackageConfig(fileSystem); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' - name: example + name: my_app flutter: shaders: - assets/shader.frag @@ -978,11 +965,11 @@ flutter: testUsingContext( 'Included shaders are compiled for the web', () async { - createPackageConfig(fileSystem); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' - name: example + name: my_app flutter: shaders: - assets/shader.frag @@ -1040,7 +1027,7 @@ flutter: testUsingContext( 'Material shaders are compiled for the web', () async { - createPackageConfig(fileSystem); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); final String materialIconsPath = fileSystem.path.join( getFlutterRoot(), @@ -1090,7 +1077,7 @@ flutter: fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' - name: example + name: my_app flutter: uses-material-design: true '''); @@ -1130,12 +1117,16 @@ flutter: 'Does not insert dummy file into additionalDependencies ' 'when wildcards are used by dependencies', () async { - createPackageConfig(globals.fs, packages: {'example': '', 'foo': 'foo'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'foo': 'foo'}, + ); globals.fs.file(globals.fs.path.join('assets', 'foo', 'bar.txt')).createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app dependencies: foo: any '''); @@ -1164,12 +1155,16 @@ flutter: testUsingContext( 'does not track wildcard directories from dependencies', () async { - createPackageConfig(globals.fs, packages: {'example': '', 'foo': 'foo'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'foo': 'foo'}, + ); globals.fs.file(globals.fs.path.join('assets', 'foo', 'bar.txt')).createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app dependencies: foo: any '''); @@ -1215,12 +1210,16 @@ flutter: 'reports package that causes asset bundle error when it is ' 'a dependency', () async { - createPackageConfig(globals.fs, packages: {'example': '', 'foo': 'foo'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'foo': 'foo'}, + ); globals.fs.file(globals.fs.path.join('assets', 'foo', 'bar.txt')).createSync(recursive: true); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app dependencies: foo: any '''); @@ -1249,11 +1248,15 @@ flutter: 'does not report package that causes asset bundle error ' 'when it is from own pubspec', () async { - createPackageConfig(globals.fs, packages: {'example': '', 'foo': 'foo'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'foo': 'foo'}, + ); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: - bar.txt @@ -1274,11 +1277,15 @@ flutter: 'does not include Material Design assets if uses-material-design: true is ' 'specified only by a dependency', () async { - createPackageConfig(globals.fs, packages: {'example': '', 'foo': 'foo'}); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'foo': 'foo'}, + ); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app dependencies: foo: any @@ -1310,11 +1317,11 @@ flutter: testUsingContext( 'does not include assets in project directories as asset variants', () async { - createPackageConfig(globals.fs, packages: {'example': ''}); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: @@ -1354,11 +1361,11 @@ flutter: testUsingContext( 'deferred and regular assets are included in manifest alphabetically', () async { - createPackageConfig(globals.fs, packages: {'example': ''}); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'my_app'); globals.fs.file('pubspec.yaml') ..createSync() ..writeAsStringSync(r''' -name: example +name: my_app flutter: assets: diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart index e1abe7b136..b9133404ca 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart @@ -19,6 +19,7 @@ import 'package:flutter_tools/src/project.dart'; import 'package:standard_message_codec/standard_message_codec.dart'; import '../src/common.dart'; +import '../src/package_config.dart'; void main() { Future>> extractAssetManifestJsonFromBundle( @@ -58,14 +59,7 @@ void main() { fileSystem: fs, userMessages: UserMessages(), ); - fs.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fs.currentDirectory, mainLibName: 'test'); }); void createPubspec({required List assets}) { @@ -292,14 +286,7 @@ ${assets.map((String entry) => ' - $entry').join('\n')} userMessages: UserMessages(), ); - fs.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fs.currentDirectory, mainLibName: 'test'); fs.file('pubspec.yaml').writeAsStringSync(''' name: test diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart index 1eca6d2a53..f07f0670e5 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart @@ -16,6 +16,7 @@ import 'package:flutter_tools/src/build_system/targets/android.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fake_process_manager.dart'; +import '../../../src/package_config.dart'; void main() { late FakeProcessManager processManager; @@ -552,10 +553,7 @@ void main() { fileSystem .file('pubspec.yaml') .writeAsStringSync('name: hello\nflutter:\n shaders:\n - shader.glsl'); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'hello'); fileSystem.file('shader.glsl').writeAsStringSync('test'); processManager.addCommands([ diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart index 968cd883f1..f8760cf1a3 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart @@ -21,6 +21,7 @@ import 'package:flutter_tools/src/globals.dart' as globals; import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fake_process_manager.dart'; +import '../../../src/package_config.dart'; void main() { late Environment environment; @@ -47,7 +48,6 @@ void main() { .createSync(recursive: true); fileSystem.file('assets/foo/bar.png').createSync(recursive: true); fileSystem.file('assets/wildcard/#bar.png').createSync(recursive: true); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(''' @@ -64,20 +64,11 @@ flutter: testUsingContext( 'includes LICENSE file inputs in dependencies', () async { - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "foo", - "rootUri": "file:///bar", - "packageUri": "lib/" - } - ] -} -'''); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'example', + packages: {'foo': 'bar'}, + ); fileSystem.file('bar/LICENSE') ..createSync(recursive: true) ..writeAsStringSync('THIS IS A LICENSE'); @@ -104,6 +95,7 @@ flutter: testUsingContext( 'Copies files to correct asset directory', () async { + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'example'); await const CopyAssets().build(environment); expect( @@ -152,6 +144,7 @@ flutter: flavors: - strawberry '''); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'example'); fileSystem.file('assets/common/image.png').createSync(recursive: true); fileSystem.file('assets/vanilla/ice-cream.png').createSync(recursive: true); @@ -200,6 +193,7 @@ flutter: flavors: - strawberry '''); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'example'); fileSystem.file('assets/common/image.png').createSync(recursive: true); fileSystem.file('assets/vanilla/ice-cream.png').createSync(recursive: true); @@ -251,11 +245,6 @@ flutter: defines: {kBuildMode: BuildMode.debug.cliName}, ); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); - fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(''' @@ -268,6 +257,8 @@ flutter: args: ["-a", "-b", "--color", "green"] '''); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'example'); + fileSystem.file('input.txt') ..createSync(recursive: true) ..writeAsStringSync('abc'); @@ -341,11 +332,6 @@ flutter: defines: {kBuildMode: BuildMode.debug.cliName}, ); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); - fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(''' @@ -358,6 +344,8 @@ flutter: args: ["-a", "-b", "--color", "green"] '''); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'example'); + await fileSystem.file('input.txt').create(recursive: true); await expectToolExitLater( @@ -441,11 +429,6 @@ flutter: defines: {kBuildMode: BuildMode.debug.cliName}, ); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); - fileSystem.file('pubspec.yaml') ..createSync() ..writeAsStringSync(''' @@ -457,6 +440,8 @@ flutter: - package: my_capitalizer_transformer '''); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'example'); + fileSystem.file('input.txt') ..createSync(recursive: true) ..writeAsStringSync('abc'); diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart index 6e5cf102f6..0ef4a44a26 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart @@ -17,6 +17,7 @@ import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fake_pub_deps.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; const String _kEmptyPubspecFile = ''' name: path_provider_example @@ -26,40 +27,6 @@ dependencies: sdk: flutter '''; -const String _kEmptyPackageJson = ''' -{ - "configVersion": 2, - "packages": [ - { - "name": "path_provider_example", - "rootUri": "../", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ] -} -'''; - -const String _kSamplePackageJson = ''' -{ - "configVersion": 2, - "packages": [ - { - "name": "path_provider_linux", - "rootUri": "/path_provider_linux", - "packageUri": "lib/", - "languageVersion": "2.12" - }, - { - "name": "path_provider_example", - "rootUri": "../", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ] -} -'''; - const String _kSamplePubspecFile = ''' name: path_provider_example description: Demonstrates how to use the path_provider plugin. @@ -174,11 +141,15 @@ void main() { generateDartPluginRegistry: true, ); - projectDir.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(_kSamplePackageJson); + writePackageConfigFile( + directory: projectDir, + mainLibName: 'path_provider_example', + packages: {'path_provider_linux': '/path_provider_linux'}, + ); - projectDir.childFile('pubspec.yaml').createSync(); + projectDir.childFile('pubspec.yaml').writeAsStringSync(''' +name: path_provider_example +'''); final FlutterProject testProject = FlutterProject.fromDirectoryTest(projectDir); await DartPluginRegistrantTarget.test(testProject).build(environment); @@ -213,9 +184,12 @@ void main() { generateDartPluginRegistry: true, ); - projectDir.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(_kSamplePackageJson); + writePackageConfigFile( + directory: projectDir, + mainLibName: 'path_provider_example', + packages: {'path_provider_linux': '/path_provider_linux'}, + languageVersions: {'path_provider_example': '2.12'}, + ); projectDir.childFile('pubspec.yaml').writeAsStringSync(_kSamplePubspecFile); @@ -296,10 +270,11 @@ void main() { }, generateDartPluginRegistry: true, ); - final File config = - projectDir.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(_kSamplePackageJson); + writePackageConfigFile( + directory: projectDir, + mainLibName: 'path_provider_example', + packages: {'path_provider_linux': '/path_provider_linux'}, + ); final File pubspec = projectDir.childFile('pubspec.yaml') ..writeAsStringSync(_kSamplePubspecFile); @@ -321,7 +296,7 @@ void main() { // Simulate a user removing everything from pubspec.yaml. pubspec.writeAsStringSync(_kEmptyPubspecFile); - config.writeAsStringSync(_kEmptyPackageJson); + writePackageConfigFile(directory: projectDir, mainLibName: 'path_provider_example'); await DartPluginRegistrantTarget.test(testProject).build(environment); expect(generatedMain.existsSync(), isFalse); @@ -350,9 +325,11 @@ void main() { generateDartPluginRegistry: true, ); - projectDir.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(_kSamplePackageJson); + writePackageConfigFile( + directory: projectDir, + mainLibName: 'path_provider_example', + packages: {'path_provider_linux': '/path_provider_linux'}, + ); projectDir.childFile('pubspec.yaml').writeAsStringSync(_kSamplePubspecFile); diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart index eae22b993d..f1a1615fe1 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart @@ -20,6 +20,7 @@ import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fake_process_manager.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; final Platform macPlatform = FakePlatform( operatingSystem: 'macos', @@ -208,11 +209,8 @@ void main() { .file(artifacts.getArtifactPath(Artifact.isolateSnapshotData, mode: BuildMode.debug)) .createSync(); // Project info - fileSystem.file('pubspec.yaml').writeAsStringSync('name: hello'); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync('name: my_app'); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); // Plist file fileSystem .file(fileSystem.path.join('ios', 'Flutter', 'AppFrameworkInfo.plist')) @@ -390,11 +388,8 @@ void main() { // Project info fileSystem .file('pubspec.yaml') - .writeAsStringSync('name: hello\nflutter:\n shaders:\n - shader.glsl'); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + .writeAsStringSync('name: my_app\nflutter:\n shaders:\n - shader.glsl'); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); // Plist file fileSystem .file(fileSystem.path.join('ios', 'Flutter', 'AppFrameworkInfo.plist')) @@ -474,11 +469,9 @@ void main() { environment.defines[kXcodeAction] = 'build'; // Project info - fileSystem.file('pubspec.yaml').writeAsStringSync('name: hello'); - fileSystem - .directory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync('name: my_app'); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); + // Plist file fileSystem .file(fileSystem.path.join('ios', 'Flutter', 'AppFrameworkInfo.plist')) diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart index be14a814e5..a8347982b4 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart @@ -23,6 +23,7 @@ import '../../../src/common.dart'; import '../../../src/fake_process_manager.dart'; import '../../../src/fake_pub_deps.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; import '../../../src/testbed.dart'; const List _kDart2jsLinuxArgs = [ @@ -61,21 +62,16 @@ void main() { setUp(() { testbed = Testbed( setup: () { - globals.fs.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "foo", - "rootUri": "../foo/", - "packageUri": "lib/", - "languageVersion": "2.7" - } - ] -} + globals.fs.currentDirectory.childFile('pubspec.yaml').writeAsStringSync(''' +name: foo '''); + + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'foo': 'foo/'}, + languageVersions: {'foo': '2.7'}, + ); globals.fs.currentDirectory.childDirectory('bar').createSync(); processManager = FakeProcessManager.empty(); globals.fs 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 0dce3098e4..bf0f9f2dda 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 @@ -26,6 +26,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; void _writeCustomDevicesConfigFile(Directory dir, List configs) { dir.createSync(); @@ -298,7 +299,7 @@ void main() { testWithoutContext('CustomDevice.isSupportedForProject is true with editable host app', () async { final MemoryFileSystem fileSystem = MemoryFileSystem.test(); fileSystem.file('pubspec.yaml').createSync(); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FlutterProject flutterProject = _setUpFlutterProject(fileSystem.currentDirectory); diff --git a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart index 2010cd7f54..365102fb21 100644 --- a/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart +++ b/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart @@ -17,6 +17,7 @@ import 'package:flutter_tools/src/project.dart'; import '../../src/common.dart'; import '../../src/fake_process_manager.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; void main() { setUpAll(() { @@ -750,12 +751,11 @@ exit code: 66 'get', '--example', ], - onRun: (_) { - fileSystem.currentDirectory - .childDirectory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); - }, + onRun: + (_) => writePackageConfigFile( + directory: fileSystem.currentDirectory, + mainLibName: 'my_app', + ), ), ]); @@ -907,12 +907,11 @@ exit code: 66 'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests', }, - onRun: (_) { - fileSystem.currentDirectory - .childDirectory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); - }, + onRun: + (_) => writePackageConfigFile( + directory: fileSystem.currentDirectory, + mainLibName: 'my_app', + ), ), ]); diff --git a/packages/flutter_tools/test/general.shard/dart_plugin_test.dart b/packages/flutter_tools/test/general.shard/dart_plugin_test.dart index f445859218..b228a59800 100644 --- a/packages/flutter_tools/test/general.shard/dart_plugin_test.dart +++ b/packages/flutter_tools/test/general.shard/dart_plugin_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:convert'; - import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:flutter_tools/src/dart/package_map.dart'; @@ -23,6 +21,7 @@ import '../src/common.dart'; import '../src/context.dart'; import '../src/fake_pub_deps.dart'; import '../src/fakes.dart'; +import '../src/package_config.dart'; void main() { // TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default. @@ -47,10 +46,7 @@ void main() { ..flutterPluginsFile = directory.childFile('.flutter-plugins') ..flutterPluginsDependenciesFile = directory.childFile('.flutter-plugins-dependencies') ..dartPluginRegistrant = directory.childFile('dart_plugin_registrant.dart'); - flutterProject.directory - .childDirectory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: flutterProject.directory, mainLibName: 'my_app'); }); group('resolvePlatformImplementation', () { @@ -1282,7 +1278,7 @@ void main() { 'Plugin without platform support throws tool exit', () async { flutterProject.isModule = false; - + flutterManifest.dependencies.add('url_launcher_macos'); createFakeDartPlugins(flutterProject, flutterManifest, fs, { 'url_launcher_macos': ''' flutter: @@ -1375,6 +1371,7 @@ void main() { 'Does not create new entrypoint if there are no platform resolutions', () async { flutterProject.isModule = false; + createFakeDartPlugins(flutterProject, flutterManifest, fs, {}); final Directory libDir = flutterProject.directory.childDirectory('lib'); libDir.createSync(recursive: true); @@ -1456,23 +1453,6 @@ void main() { }); } -void addToPackageConfig(FlutterProject project, String name, Directory packageDir) { - final File packageConfigFile = project.directory - .childDirectory('.dart_tool') - .childFile('package_config.json'); - - final Map packageConfig = - jsonDecode(packageConfigFile.readAsStringSync()) as Map; - - (packageConfig['packages']! as List).add({ - 'name': name, - 'rootUri': packageDir.uri.toString(), - 'packageUri': 'lib/', - }); - - packageConfigFile.writeAsStringSync(jsonEncode(packageConfig)); -} - void createFakeDartPlugins( FakeFlutterProject flutterProject, FakeFlutterManifest flutterManifest, @@ -1480,21 +1460,18 @@ void createFakeDartPlugins( Map plugins, ) { final Directory fakePubCache = fs.systemTempDirectory.childDirectory('cache'); - - flutterProject.directory.childDirectory('.dart_tool').childFile('package_config.json') - ..deleteSync(recursive: true) - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [], - "configVersion": 2 -} -'''); + writePackageConfigFile( + directory: flutterProject.directory, + mainLibName: flutterProject.manifest.appName, + packages: { + for (final String name in plugins.keys) + name: fakePubCache.childDirectory(name).uri.toString(), + }, + ); for (final MapEntry entry in plugins.entries) { final String name = fs.path.basename(entry.key); final Directory pluginDirectory = fakePubCache.childDirectory(name); - addToPackageConfig(flutterProject, name, pluginDirectory); pluginDirectory.childFile('pubspec.yaml') ..createSync(recursive: true) ..writeAsStringSync(entry.value); @@ -1505,6 +1482,9 @@ void createFakeDartPlugins( class FakeFlutterManifest extends Fake implements FlutterManifest { @override Set dependencies = {}; + + @override + String get appName => 'myapp'; } class FakeFlutterProject extends Fake implements FlutterProject { diff --git a/packages/flutter_tools/test/general.shard/hot_test.dart b/packages/flutter_tools/test/general.shard/hot_test.dart index ccfa169dbf..f32bf32f78 100644 --- a/packages/flutter_tools/test/general.shard/hot_test.dart +++ b/packages/flutter_tools/test/general.shard/hot_test.dart @@ -24,6 +24,7 @@ import '../src/common.dart'; import '../src/context.dart'; import '../src/fake_pub_deps.dart'; import '../src/fakes.dart'; +import '../src/package_config.dart'; import 'hot_shared.dart'; void main() { @@ -182,14 +183,7 @@ void main() { testUsingContext( 'setupHotRestart function fails', () async { - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FakeDevice device = FakeDevice(); final List devices = [FakeFlutterDevice(device)]; final OperationResult result = await HotRunner( @@ -217,14 +211,7 @@ void main() { testUsingContext( 'setupHotReload function fails', () async { - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FakeDevice device = FakeDevice(); final FakeFlutterDevice fakeFlutterDevice = FakeFlutterDevice(device); final List devices = [fakeFlutterDevice]; @@ -273,14 +260,7 @@ void main() { testUsingContext( 'shutdown hook called after signal', () async { - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FakeDevice device = FakeDevice(); final List devices = [ FlutterDevice( @@ -310,14 +290,7 @@ void main() { testUsingContext( 'shutdown hook called after app stop', () async { - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FakeDevice device = FakeDevice(); final List devices = [ FlutterDevice( @@ -680,14 +653,7 @@ void main() { 'Exits with code 2 when HttpException is thrown ' 'during VM service connection', () async { - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [] -} -'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); final FakeResidentCompiler residentCompiler = FakeResidentCompiler(); final FakeDevice device = FakeDevice(); diff --git a/packages/flutter_tools/test/general.shard/ios/ios_device_start_nonprebuilt_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_device_start_nonprebuilt_test.dart index f707fbe6d2..1840317fc3 100644 --- a/packages/flutter_tools/test/general.shard/ios/ios_device_start_nonprebuilt_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/ios_device_start_nonprebuilt_test.dart @@ -37,6 +37,7 @@ import '../../src/fake_devices.dart'; import '../../src/fake_process_manager.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; List _xattrArgs(FlutterProject flutterProject) { return ['xattr', '-r', '-d', 'com.apple.FinderInfo', flutterProject.directory.path]; @@ -1156,8 +1157,10 @@ void main() { } void setUpIOSProject(FileSystem fileSystem, {bool createWorkspace = true}) { - fileSystem.file('pubspec.yaml').createSync(); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync(''' +name: my_app +'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.directory('ios').createSync(); if (createWorkspace) { fileSystem.directory('ios/Runner.xcworkspace').createSync(); diff --git a/packages/flutter_tools/test/general.shard/ios/mac_test.dart b/packages/flutter_tools/test/general.shard/ios/mac_test.dart index aa7e1d9d7a..3de383030c 100644 --- a/packages/flutter_tools/test/general.shard/ios/mac_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/mac_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:convert'; - import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:flutter_tools/src/artifacts.dart'; @@ -28,6 +26,7 @@ import '../../src/context.dart'; import '../../src/fake_process_manager.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; void main() { late BufferLogger logger; @@ -658,7 +657,9 @@ duplicate symbol '_$s29plugin_1_name23PluginNamePluginC9setDouble3key5valueySS_S final FakeFlutterProject project = FakeFlutterProject(fileSystem: fs); project.ios.podfile.createSync(recursive: true); project.manifest = FakeFlutterManifest(); - createFakePlugins(project, fs, ['plugin_1_name', 'plugin_2_name']); + final List pluginNames = ['plugin_1_name', 'plugin_2_name']; + project.manifest.dependencies.addAll(pluginNames); + createFakePlugins(project, fs, pluginNames); fs.systemTempDirectory .childFile('cache/plugin_1_name/ios/plugin_1_name/Package.swift') .createSync(recursive: true); @@ -770,23 +771,6 @@ duplicate symbol '_$s29plugin_1_name23PluginNamePluginC9setDouble3key5valueySS_S }); } -void addToPackageConfig(FlutterProject flutterProject, String name, Directory packageDir) { - final File packageConfigFile = flutterProject.directory - .childDirectory('.dart_tool') - .childFile('package_config.json'); - - final Map packageConfig = - jsonDecode(packageConfigFile.readAsStringSync()) as Map; - - (packageConfig['packages']! as List).add({ - 'name': name, - 'rootUri': packageDir.uri.toString(), - 'packageUri': 'lib/', - }); - - packageConfigFile.writeAsStringSync(jsonEncode(packageConfig)); -} - void createFakePlugins( FlutterProject flutterProject, FileSystem fileSystem, @@ -803,17 +787,15 @@ void createFakePlugins( '''; final Directory fakePubCache = fileSystem.systemTempDirectory.childDirectory('cache'); - flutterProject.directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [], - "configVersion": 2 -} -'''); + writePackageConfigFile( + directory: flutterProject.directory, + mainLibName: 'my_app', + packages: { + for (final String name in pluginNames) name: fakePubCache.childDirectory(name).path, + }, + ); for (final String name in pluginNames) { final Directory pluginDirectory = fakePubCache.childDirectory(name); - addToPackageConfig(flutterProject, name, pluginDirectory); pluginDirectory.childFile('pubspec.yaml') ..createSync(recursive: true) ..writeAsStringSync(pluginYamlTemplate.replaceAll('PLUGIN_CLASS', name)); diff --git a/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart index 9812e9b284..5c2f6b6dda 100644 --- a/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart @@ -18,6 +18,7 @@ import 'package:native_assets_cli/code_assets_builder.dart'; import '../../../../src/common.dart'; import '../../../../src/context.dart'; import '../../../../src/fakes.dart'; +import '../../../../src/package_config.dart'; import '../../fake_native_assets_build_runner.dart'; void main() { @@ -73,7 +74,7 @@ void main() { }); testUsingContext('NativeAssets defaults to ios archs if missing', () async { - await createPackageConfig(iosEnvironment); + writePackageConfigFile(directory: iosEnvironment.projectDir, mainLibName: 'my_app'); iosEnvironment.defines.remove(kIosArchs); @@ -90,7 +91,7 @@ void main() { 'NativeAssets throws error if missing sdk root', overrides: {FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true)}, () async { - await createPackageConfig(iosEnvironment); + writePackageConfigFile(directory: iosEnvironment.projectDir, mainLibName: 'my_app'); final FlutterNativeAssetsBuildRunner buildRunner = FakeFlutterNativeAssetsBuildRunner( packagesWithNativeAssetsResult: ['foo'], @@ -116,7 +117,7 @@ void main() { FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: isNativeAssetsEnabled), }, () async { - await createPackageConfig(iosEnvironment); + writePackageConfigFile(directory: iosEnvironment.projectDir, mainLibName: 'my_app'); final FlutterNativeAssetsBuildRunner buildRunner = FakeFlutterNativeAssetsBuildRunner(); await DartBuildForNative(buildRunner: buildRunner).build(iosEnvironment); @@ -186,7 +187,7 @@ void main() { FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), }, () async { - await createPackageConfig(iosEnvironment); + writePackageConfigFile(directory: iosEnvironment.projectDir, mainLibName: 'my_app'); final List codeAssets = [ CodeAsset( @@ -252,7 +253,7 @@ void main() { FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), }, () async { - await createPackageConfig(androidEnvironment); + writePackageConfigFile(directory: androidEnvironment.projectDir, mainLibName: 'my_app'); await fileSystem.file('libfoo.so').create(); final List codeAssets = [ @@ -279,11 +280,3 @@ void main() { ); } } - -Future createPackageConfig(Environment iosEnvironment) async { - final File packageConfig = iosEnvironment.projectDir - .childDirectory('.dart_tool') - .childFile('package_config.json'); - await packageConfig.parent.create(); - await packageConfig.create(); -} diff --git a/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart index ed54ae8d36..f1a2796c99 100644 --- a/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart @@ -21,6 +21,7 @@ import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; import '../fake_native_assets_build_runner.dart'; void main() { @@ -103,12 +104,10 @@ void main() { await fileSystem.file('/some/path/to/llvm-ar').create(); await fileSystem.file('/some/path/to/ld.lld').create(); - final File packageConfigFile = fileSystem - .directory(projectUri) - .childDirectory('.dart_tool') - .childFile('package_config.json'); - await packageConfigFile.parent.create(); - await packageConfigFile.create(); + final File packageConfigFile = writePackageConfigFile( + directory: fileSystem.directory(projectUri), + mainLibName: 'my_app', + ); final PackageConfig packageConfig = await loadPackageConfigWithLogging( packageConfigFile, logger: environment.logger, diff --git a/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart index 55d0b74268..e03f65fba3 100644 --- a/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart @@ -21,6 +21,7 @@ import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; import '../fake_native_assets_build_runner.dart'; void main() { @@ -388,12 +389,10 @@ InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault return; } - final File packageConfigFile = fileSystem - .directory(projectUri) - .childDirectory('.dart_tool') - .childFile('package_config.json'); - await packageConfigFile.parent.create(); - await packageConfigFile.create(); + final File packageConfigFile = writePackageConfigFile( + directory: fileSystem.directory(projectUri), + mainLibName: 'my_app', + ); final PackageConfig packageConfig = await loadPackageConfigWithLogging( packageConfigFile, logger: environment.logger, diff --git a/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart index 85e6b5df2f..36ab9f068f 100644 --- a/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart @@ -22,6 +22,7 @@ import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; import '../fake_native_assets_build_runner.dart'; void main() { @@ -76,13 +77,9 @@ void main() { ProcessManager: () => FakeProcessManager.empty(), }, () async { - final File packageConfig = environment.projectDir - .childDirectory('.dart_tool') - .childFile('package_config.json'); + writePackageConfigFile(directory: environment.projectDir, mainLibName: 'my_app'); final Uri nonFlutterTesterAssetUri = environment.buildDir.childFile(InstallCodeAssets.nativeAssetsFilename).uri; - await packageConfig.parent.create(); - await packageConfig.create(); final File dylibAfterCompiling = fileSystem.file('bar.dll'); // The mock doesn't create the file, so create it here. await dylibAfterCompiling.create(); @@ -255,12 +252,10 @@ void main() { ); await msvcBinDir.create(recursive: true); - final File packageConfigFile = fileSystem - .directory(projectUri) - .childDirectory('.dart_tool') - .childFile('package_config.json'); - await packageConfigFile.parent.create(); - await packageConfigFile.create(); + final File packageConfigFile = writePackageConfigFile( + directory: fileSystem.directory(projectUri), + mainLibName: 'my_app', + ); final PackageConfig packageConfig = await loadPackageConfigWithLogging( packageConfigFile, logger: environment.logger, diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapod_utils_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapod_utils_test.dart index 2c3ab180b2..80a7ab2635 100644 --- a/packages/flutter_tools/test/general.shard/macos/cocoapod_utils_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/cocoapod_utils_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:convert'; - import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:file_testing/file_testing.dart'; @@ -19,6 +17,7 @@ import 'package:test/fake.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_pub_deps.dart'; +import '../../src/package_config.dart'; void main() { group('processPodsIfNeeded', () { @@ -27,7 +26,11 @@ void main() { late BufferLogger logger; // Adds basic properties to the flutterProject and its subprojects. - void setUpProject(FakeFlutterProject flutterProject, MemoryFileSystem fileSystem) { + void setUpProject( + FakeFlutterProject flutterProject, + MemoryFileSystem fileSystem, { + List pluginNames = const [], + }) { flutterProject ..manifest = FakeFlutterManifest() ..directory = fileSystem.systemTempDirectory.childDirectory('app') @@ -40,28 +43,11 @@ void main() { ..android = FakeAndroidProject() ..web = FakeWebProject() ..windows = FakeWindowsProject() - ..linux = FakeLinuxProject(); - flutterProject.directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [], - "configVersion": 2 -} -'''); - } + ..linux = FakeLinuxProject() + ..packageConfig = flutterProject.directory + .childDirectory('.dart_tool') + .childFile('package_config.json'); - setUp(() async { - fs = MemoryFileSystem.test(); - cocoaPods = FakeCocoaPods(); - logger = BufferLogger.test(); - }); - - void createFakePlugins( - FlutterProject flutterProject, - FileSystem fileSystem, - List pluginNames, - ) { const String pluginYamlTemplate = ''' flutter: plugin: @@ -73,36 +59,38 @@ void main() { '''; final Directory fakePubCache = fileSystem.systemTempDirectory.childDirectory('cache'); - final File packageConfigFile = flutterProject.directory - .childDirectory('.dart_tool') - .childFile('package_config.json')..createSync(recursive: true); - final Map packageConfig = { - 'packages': [], - 'configVersion': 2, - }; + + writePackageConfigFile( + directory: flutterProject.directory, + mainLibName: 'my_app', + packages: { + for (final String plugin in pluginNames) + plugin: fakePubCache.childDirectory(plugin).uri.toString(), + }, + ); + for (final String name in pluginNames) { + flutterProject.manifest.dependencies.add(name); final Directory pluginDirectory = fakePubCache.childDirectory(name); - (packageConfig['packages']! as List).add({ - 'name': name, - 'rootUri': pluginDirectory.uri.toString(), - 'packageUri': 'lib/', - }); pluginDirectory.childFile('pubspec.yaml') ..createSync(recursive: true) ..writeAsStringSync(pluginYamlTemplate.replaceAll('PLUGIN_CLASS', name)); } - - packageConfigFile.writeAsStringSync(jsonEncode(packageConfig)); } + setUp(() async { + fs = MemoryFileSystem.test(); + cocoaPods = FakeCocoaPods(); + logger = BufferLogger.test(); + }); + group('for iOS', () { group('using CocoaPods only', () { testUsingContext( 'processes when there are plugins', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); await processPodsIfNeeded( flutterProject.ios, @@ -191,8 +179,7 @@ void main() { 'processes if podfile exists', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); flutterProject.ios.usesSwiftPackageManager = true; flutterProject.ios.podfile.createSync(recursive: true); @@ -215,8 +202,7 @@ void main() { 'skip if podfile does not exists', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); flutterProject.ios.usesSwiftPackageManager = true; await processPodsIfNeeded( @@ -237,8 +223,7 @@ void main() { 'process if podfile does not exists but forceCocoaPodsOnly is true', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); flutterProject.ios.usesSwiftPackageManager = true; final File generatedManifestFile = flutterProject.ios.flutterPluginSwiftPackageManifest; generatedManifestFile.createSync(recursive: true); @@ -277,8 +262,7 @@ void main() { 'processes when there are plugins', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); await processPodsIfNeeded( flutterProject.macos, @@ -367,8 +351,7 @@ void main() { 'processes if podfile exists', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); flutterProject.macos.usesSwiftPackageManager = true; flutterProject.macos.podfile.createSync(recursive: true); @@ -391,8 +374,7 @@ void main() { 'skip if podfile does not exists', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); flutterProject.macos.usesSwiftPackageManager = true; await processPodsIfNeeded( @@ -413,8 +395,7 @@ void main() { 'process if podfile does not exists but forceCocoaPodsOnly is true', () async { final FakeFlutterProject flutterProject = FakeFlutterProject(); - setUpProject(flutterProject, fs); - createFakePlugins(flutterProject, fs, ['plugin_one', 'plugin_two']); + setUpProject(flutterProject, fs, pluginNames: ['plugin_one', 'plugin_two']); flutterProject.macos.usesSwiftPackageManager = true; final File generatedManifestFile = flutterProject.macos.flutterPluginSwiftPackageManifest; @@ -489,6 +470,9 @@ class FakeFlutterProject extends Fake implements FlutterProject { @override late WindowsProject windows; + + @override + late File packageConfig; } class FakeMacOSProject extends Fake implements MacOSProject { diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart index 63f4f4eceb..2cea1d9984 100644 --- a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart @@ -23,6 +23,7 @@ import '../../src/context.dart'; import '../../src/fake_process_manager.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; enum _StdioStream { stdout, stderr } @@ -58,10 +59,19 @@ void main() { } FlutterProject setupProjectUnderTest() { + fileSystem.directory('project').childFile('pubspec.yaml') + ..createSync(recursive: true) + ..writeAsStringSync(''' +name: my_app +environement: + sdk: '^3.5.0' +'''); + // This needs to be run within testWithoutContext and not setUp since FlutterProject uses context. final FlutterProject projectUnderTest = FlutterProject.fromDirectory( fileSystem.directory('project'), ); + writePackageConfigFile(directory: projectUnderTest.directory, mainLibName: 'my_app'); projectUnderTest.ios.xcodeProject.createSync(recursive: true); projectUnderTest.macos.xcodeProject.createSync(recursive: true); return projectUnderTest; @@ -389,11 +399,6 @@ void main() { 'includes Pod config in xcconfig files, if the user manually added Pod dependencies without using Flutter plugins', () async { final FlutterProject projectUnderTest = setupProjectUnderTest(); - final File packageConfigFile = fileSystem.file( - fileSystem.path.join('project', '.dart_tool', 'package_config.json'), - ); - packageConfigFile.createSync(recursive: true); - packageConfigFile.writeAsStringSync('{"configVersion":2,"packages":[]}'); projectUnderTest.ios.podfile ..createSync() ..writeAsStringSync('Custom Podfile'); diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart index 658cf1943d..b3669ec394 100644 --- a/packages/flutter_tools/test/general.shard/plugins_test.dart +++ b/packages/flutter_tools/test/general.shard/plugins_test.dart @@ -33,6 +33,7 @@ import '../src/common.dart'; import '../src/context.dart'; import '../src/fake_pub_deps.dart'; import '../src/fakes.dart' hide FakeOperatingSystemUtils; +import '../src/package_config.dart'; import '../src/pubspec_schema.dart'; /// Information for a platform entry in the 'platforms' section of a plugin's @@ -197,14 +198,7 @@ void main() { // Add basic properties to the Flutter project and subprojects setUpProject(fs); - flutterProject.directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [], - "configVersion": 2 -} -'''); + writePackageConfigFile(directory: flutterProject.directory, mainLibName: 'my_app'); }); void addToPackageConfig(String name, Directory packageDir) { @@ -254,14 +248,7 @@ void main() { final List directories = []; final Directory fakePubCache = fileSystem.systemTempDirectory.childDirectory('cache'); - flutterProject.directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "packages": [], - "configVersion": 2 -} -'''); + writePackageConfigFile(directory: flutterProject.directory, mainLibName: 'my_app'); for (final String nameOrPath in pluginNamesOrPaths) { final String name = fileSystem.path.basename(nameOrPath); final Directory pluginDirectory = @@ -1317,7 +1304,7 @@ flutter: final FlutterManifest manifest = FlutterManifest.createFromString(''' -name: test +name: my_app version: 1.0.0 dependencies: @@ -1590,7 +1577,7 @@ flutter: final FlutterManifest manifest = FlutterManifest.createFromString(''' -name: test +name: my_app version: 1.0.0 dependencies: @@ -1663,7 +1650,7 @@ flutter: final FlutterManifest manifest = FlutterManifest.createFromString(''' -name: test +name: my_app version: 1.0.0 dependencies: @@ -2445,10 +2432,7 @@ flutter: ..flutterPluginsDependenciesFile = dependenciesFile ..windows = windowsProject; - flutterProject.directory - .childDirectory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: flutterProject.directory, mainLibName: 'my_app'); const String dependenciesFileContents = r''' { @@ -2817,10 +2801,7 @@ flutter: ) ..windows = windowsProject; - flutterProject.directory - .childDirectory('.dart_tool') - .childFile('package_config.json') - .createSync(recursive: true); + writePackageConfigFile(directory: flutterProject.directory, mainLibName: 'my_app'); createPluginSymlinks( flutterProject, diff --git a/packages/flutter_tools/test/general.shard/project_test.dart b/packages/flutter_tools/test/general.shard/project_test.dart index f8de74eda8..570f30f995 100644 --- a/packages/flutter_tools/test/general.shard/project_test.dart +++ b/packages/flutter_tools/test/general.shard/project_test.dart @@ -29,6 +29,7 @@ import '../src/common.dart'; import '../src/context.dart'; import '../src/fake_pub_deps.dart'; import '../src/fakes.dart'; +import '../src/package_config.dart'; void main() { // TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default. @@ -1825,9 +1826,7 @@ Future someProject({ bool includePubspec = false, }) async { final Directory directory = globals.fs.directory('some_project'); - directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync('{"configVersion":2,"packages":[]}'); + writePackageConfigFile(directory: globals.fs.currentDirectory, mainLibName: 'hello'); if (includePubspec) { directory.childFile('pubspec.yaml') ..createSync(recursive: true) @@ -1926,9 +1925,7 @@ class MyPlugin extends FluttPlugin { /* ... */ } Future aModuleProject() async { final Directory directory = globals.fs.directory('module_project'); - directory.childDirectory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync('{"configVersion":2,"packages":[]}'); + writePackageConfigFile(mainLibName: 'my_module', directory: directory); directory.childFile('pubspec.yaml').writeAsStringSync(''' name: my_module flutter: @@ -1952,9 +1949,6 @@ void _testInMemory( }) { Cache.flutterRoot = getFlutterRoot(); final FileSystem testFileSystem = fileSystem ?? getFileSystemForPlatform(); - testFileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync('{"configVersion":2,"packages":[]}'); // Transfer needed parts of the Flutter installation folder // to the in-memory file system used during testing. final Logger logger = BufferLogger.test(); @@ -1982,27 +1976,17 @@ void _testInMemory( testFileSystem, ); // Set up enough of the packages to satisfy the templating code. - final File packagesFile = testFileSystem - .directory(Cache.flutterRoot) - .childDirectory('packages') - .childDirectory('flutter_tools') - .childDirectory('.dart_tool') - .childFile('package_config.json'); final Directory dummyTemplateImagesDirectory = testFileSystem.directory(Cache.flutterRoot).parent; dummyTemplateImagesDirectory.createSync(recursive: true); - packagesFile.createSync(recursive: true); - packagesFile.writeAsStringSync( - json.encode({ - 'configVersion': 2, - 'packages': [ - { - 'name': 'flutter_template_images', - 'rootUri': dummyTemplateImagesDirectory.uri.toString(), - 'packageUri': 'lib/', - 'languageVersion': '2.6', - }, - ], - }), + writePackageConfigFile( + directory: testFileSystem + .directory(Cache.flutterRoot) + .childDirectory('packages') + .childDirectory('flutter_tools'), + mainLibName: 'my_app', + packages: { + 'flutter_template_images': dummyTemplateImagesDirectory.uri.toString(), + }, ); testUsingContext( 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 d292bc1ea4..bcc9d2f80c 100644 --- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart @@ -36,6 +36,7 @@ import '../src/context.dart'; import '../src/fake_pub_deps.dart'; import '../src/fake_vm_services.dart'; import '../src/fakes.dart'; +import '../src/package_config.dart'; import '../src/testbed.dart'; import 'resident_runner_helpers.dart'; @@ -1087,26 +1088,18 @@ void main() { } }'''); globals.fs.file('l10n.yaml').createSync(); - globals.fs.file('pubspec.yaml').writeAsStringSync('flutter:\n generate: true\n'); + globals.fs.file('pubspec.yaml').writeAsStringSync(''' +name: my_app +flutter: + generate: true'''); // Create necessary files for [DartPluginRegistrantTarget] - final File packageConfig = globals.fs - .directory('.dart_tool') - .childFile('package_config.json'); - packageConfig.createSync(recursive: true); - packageConfig.writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "path_provider_linux", - "rootUri": "../../../path_provider_linux", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ] -} -'''); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'path_provider_linux': 'path_provider_linux'}, + ); + // Start from an empty dart_plugin_registrant.dart file. globals.fs .directory('.dart_tool') @@ -1141,6 +1134,7 @@ void main() { }'''); globals.fs.file('l10n.yaml').createSync(); globals.fs.file('pubspec.yaml').writeAsStringSync(''' +name: my_app flutter: generate: true @@ -1152,23 +1146,12 @@ dependencies: // Create necessary files for [DartPluginRegistrantTarget], including a // plugin that will trigger generation. - final File packageConfig = globals.fs - .directory('.dart_tool') - .childFile('package_config.json'); - packageConfig.createSync(recursive: true); - packageConfig.writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "path_provider_linux", - "rootUri": "../path_provider_linux", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ] -} -'''); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'path_provider_linux': 'path_provider_linux'}, + ); + final Directory fakePluginDir = globals.fs.directory('path_provider_linux'); final File pluginPubspec = fakePluginDir.childFile('pubspec.yaml'); pluginPubspec.createSync(recursive: true); 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 44f0d93604..360c02d044 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 @@ -28,6 +28,7 @@ import '../src/common.dart'; import '../src/context.dart'; import '../src/fake_pub_deps.dart'; import '../src/fakes.dart'; +import '../src/package_config.dart'; import '../src/test_build_system.dart'; void main() { @@ -48,8 +49,11 @@ void main() { mockFlutterDevice = FakeFlutterDevice(mockWebDevice); mockFlutterDevice._devFS = mockWebDevFS; - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); - fileSystem.file('pubspec.yaml').createSync(); + fileSystem.file('pubspec.yaml').writeAsStringSync(''' +name: my_app +'''); + + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).createSync(recursive: true); fileSystem.file(fileSystem.path.join('web', 'index.html')).createSync(recursive: true); }); 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 f1ccfd1ee5..cf87025692 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 @@ -45,6 +45,7 @@ import '../src/fake_process_manager.dart'; import '../src/fake_pub_deps.dart'; import '../src/fake_vm_services.dart'; import '../src/fakes.dart' as test_fakes; +import '../src/package_config.dart'; const List kAttachLogExpectations = [ FakeVmServiceRequest(method: 'streamListen', args: {'streamId': 'Stdout'}), @@ -113,7 +114,10 @@ void main() { .._devFS = webDevFS ..device = mockDevice ..generator = residentCompiler; - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + fileSystem.file('pubspec.yaml').writeAsStringSync(''' +name: my_app +'''); + writePackageConfigFile(directory: fileSystem.currentDirectory, mainLibName: 'my_app'); fakeAnalytics = getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: test_fakes.FakeFlutterVersion(), @@ -1381,24 +1385,15 @@ void main() { }'''); globals.fs.file('l10n.yaml').createSync(); globals.fs.file('pubspec.yaml').writeAsStringSync(''' +name: my_app flutter: generate: true '''); - globals.fs.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "path_provider_linux", - "rootUri": "../../../path_provider_linux", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ] -} -'''); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'path_provider_linux': '../../path_provider_linux'}, + ); expect(await residentWebRunner.run(), 0); final File generatedLocalizationsFile = globals.fs .directory('lib') @@ -1422,23 +1417,12 @@ flutter: 'Does not generate dart_plugin_registrant.dart', () async { // Create necessary files for [DartPluginRegistrantTarget] - final File packageConfig = globals.fs - .directory('.dart_tool') - .childFile('package_config.json'); - packageConfig.createSync(recursive: true); - packageConfig.writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "path_provider_linux", - "rootUri": "../../../path_provider_linux", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ] -} -'''); + writePackageConfigFile( + directory: globals.fs.currentDirectory, + mainLibName: 'my_app', + packages: {'path_provider_linux': '../../path_provider_linux'}, + ); + // Start with a dart_plugin_registrant.dart file. globals.fs .directory('.dart_tool') diff --git a/packages/flutter_tools/test/general.shard/test/test_compiler_test.dart b/packages/flutter_tools/test/general.shard/test/test_compiler_test.dart index 04201bca63..743f534bcb 100644 --- a/packages/flutter_tools/test/general.shard/test/test_compiler_test.dart +++ b/packages/flutter_tools/test/general.shard/test/test_compiler_test.dart @@ -22,6 +22,7 @@ import '../../src/context.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; import '../../src/logging_logger.dart'; +import '../../src/package_config.dart'; final Platform linuxPlatform = FakePlatform(environment: {}); @@ -46,9 +47,13 @@ void main() { setUp(() { fileSystem = MemoryFileSystem.test(); - fileSystem.file('pubspec.yaml').createSync(); + fileSystem.file('pubspec.yaml') + ..createSync() + ..writeAsStringSync(''' +name: foo +'''); fileSystem.file('test/foo.dart').createSync(recursive: true); - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + writePackageConfigFile(mainLibName: 'foo', directory: fileSystem.currentDirectory); residentCompiler = FakeResidentCompiler(fileSystem); logger = LoggingLogger(); }); @@ -216,20 +221,11 @@ dependencies: sdk: flutter a_plugin: 1.0.0 '''); - fileSystem.directory('.dart_tool').childFile('package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(''' -{ - "configVersion": 2, - "packages": [ - { - "name": "a_plugin", - "rootUri": "/a_plugin/", - "packageUri": "lib/" - } - ] -} -'''); + writePackageConfigFile( + directory: fileSystem.currentDirectory, + mainLibName: 'foo', + packages: {'a_plugin': '/a_plugin'}, + ); fakeDartPlugin.childFile('pubspec.yaml') ..createSync(recursive: true) ..writeAsStringSync(''' 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 62acb43837..d48e513deb 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 @@ -19,6 +19,7 @@ import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; +import '../../src/package_config.dart'; import '../../src/test_build_system.dart'; void main() { @@ -48,10 +49,16 @@ void main() { fs: fileSystem, fakeFlutterVersion: flutterVersion, ); + fileSystem.currentDirectory.childFile('pubspec.yaml') + ..createSync(recursive: true) + ..writeAsStringSync(''' +name: my_app +environement: + sdk: '^3.5.0' +'''); flutterProject = FlutterProject.fromDirectoryTest(fileSystem.currentDirectory); - - fileSystem.directory('.dart_tool').childFile('package_config.json').createSync(recursive: true); + writePackageConfigFile(directory: flutterProject.directory, mainLibName: 'my_app'); }); testUsingContext( diff --git a/packages/flutter_tools/test/general.shard/web/migrations/scrub_generated_plugin_registrant_test.dart b/packages/flutter_tools/test/general.shard/web/migrations/scrub_generated_plugin_registrant_test.dart index eb59a200b9..e83eb57a41 100644 --- a/packages/flutter_tools/test/general.shard/web/migrations/scrub_generated_plugin_registrant_test.dart +++ b/packages/flutter_tools/test/general.shard/web/migrations/scrub_generated_plugin_registrant_test.dart @@ -14,6 +14,7 @@ import 'package:flutter_tools/src/features.dart'; import '../../../src/context.dart'; // legacy import '../../../src/fake_pub_deps.dart'; import '../../../src/fakes.dart'; +import '../../../src/package_config.dart'; import '../../../src/test_build_system.dart'; import '../../../src/test_flutter_command_runner.dart'; // legacy @@ -284,4 +285,9 @@ flutter: class UrlLauncherPlugin {} '''); fileSystem.file(fileSystem.path.join('lib', 'main.dart')).writeAsStringSync('void main() { }'); + writePackageConfigFile( + directory: fileSystem.currentDirectory, + mainLibName: 'foo', + packages: {'bar': 'bar'}, + ); } diff --git a/packages/flutter_tools/test/integration.shard/test_data/project.dart b/packages/flutter_tools/test/integration.shard/test_data/project.dart index 34e1389b97..2f192ff1f2 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/project.dart @@ -4,6 +4,7 @@ import 'package:file/file.dart'; +import '../../src/package_config.dart'; import '../test_utils.dart'; import 'deferred_components_config.dart'; @@ -66,7 +67,7 @@ abstract class Project { writeFile(fileSystem.path.join(dir.path, 'web', 'index.html'), indexHtml); writeFile(fileSystem.path.join(dir.path, 'web', 'flutter.js'), ''); writeFile(fileSystem.path.join(dir.path, 'web', 'flutter_service_worker.js'), ''); - writePackageConfig(dir.path); + writePackageConfigFile(directory: dir, mainLibName: 'test'); await getPackages(dir.path); } diff --git a/packages/flutter_tools/test/integration.shard/test_utils.dart b/packages/flutter_tools/test/integration.shard/test_utils.dart index 3dd34d54d3..323103c4c8 100644 --- a/packages/flutter_tools/test/integration.shard/test_utils.dart +++ b/packages/flutter_tools/test/integration.shard/test_utils.dart @@ -56,21 +56,6 @@ void writeBytesFile(String path, List content) { ..writeAsBytesSync(content, flush: true); } -void writePackageConfig(String folder) { - writeFile(fileSystem.path.join(folder, '.dart_tool', 'package_config.json'), ''' -{ - "configVersion": 2, - "packages": [ - { - "name": "test", - "rootUri": "fileSystem.currentDirectory.path" - "packageUri": "lib/", - } - ] -} -'''); -} - Future getPackages(String folder) async { final List command = [ fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter'), diff --git a/packages/flutter_tools/test/src/package_config.dart b/packages/flutter_tools/test/src/package_config.dart new file mode 100644 index 0000000000..50ee28f5b4 --- /dev/null +++ b/packages/flutter_tools/test/src/package_config.dart @@ -0,0 +1,47 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:convert'; +import 'package:file/file.dart'; + +/// Writes a `.dart_tool/package_config.json` file at [directory]. +/// +/// If directory is not specified, it will be `globals.fs.currentDirectory`; +/// +/// It will contain a package entry for [mainLibName] with `rootUri` at +/// [directory]. +/// +/// [otherLibs] maps other package names to their `rootUri` relative to `directory`. +/// +/// Returns the `File` Object representing the package config. +File writePackageConfigFile({ + required Directory directory, + required String mainLibName, + Map packages = const {}, + Map languageVersions = const {}, +}) { + return directory.childDirectory('.dart_tool').childFile('package_config.json') + ..createSync(recursive: true) + ..writeAsStringSync( + json.encode({ + 'packages': [ + { + 'name': mainLibName, + 'rootUri': '../', + 'packageUri': 'lib/', + 'languageVersion': languageVersions[mainLibName] ?? '3.7', + }, + ...packages.entries.map( + (MapEntry entry) => { + 'name': entry.key, + 'rootUri': Uri.parse('../').resolve(entry.value).toString(), + 'packageUri': 'lib/', + 'languageVersion': languageVersions[entry.key] ?? '3.7', + }, + ), + ], + 'configVersion': 2, + }), + ); +}