From db141ecd28e166b2ba0f4903c3fd9fb13e4eb1f3 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 6 Feb 2024 20:00:08 -0800 Subject: [PATCH] Copy the flutter version JSON file into the simulated Flutter SDK used by update_packages (#143035) Dart pub now expects that file to be present in a Flutter SDK (see https://dart.googlesource.com/pub/+/dce232ec195df802a730eb3a66163e28d2ec6444) --- .../lib/src/commands/update_packages.dart | 5 +++++ .../hermetic/update_packages_test.dart | 17 +++++++++++++++++ .../general.shard/update_packages_test.dart | 19 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart index 13f4a2ff5c..18a6b8caf3 100644 --- a/packages/flutter_tools/lib/src/commands/update_packages.dart +++ b/packages/flutter_tools/lib/src/commands/update_packages.dart @@ -19,6 +19,7 @@ import '../globals.dart' as globals; import '../project.dart'; import '../runner/flutter_command.dart'; import '../update_packages_pins.dart'; +import '../version.dart'; class UpdatePackagesCommand extends FlutterCommand { UpdatePackagesCommand() { @@ -1713,6 +1714,10 @@ Directory createTemporaryFlutterSdk( // Fill in version info. realFlutter.childFile('version') .copySync(directory.childFile('version').path); + final File versionJson = FlutterVersion.getVersionFile(realFlutter.fileSystem, realFlutter.path); + final Directory binCacheDirectory = directory.childDirectory('bin').childDirectory('cache'); + binCacheDirectory.createSync(recursive: true); + versionJson.copySync(binCacheDirectory.childFile('flutter.version.json').path); // Directory structure should mirror the current Flutter SDK final Directory packages = directory.childDirectory('packages'); 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 7ca7ca0148..9f19c14b45 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 @@ -73,6 +73,20 @@ dependencies: # PUBSPEC CHECKSUM: 6543 '''; +const String kVersionJson = ''' +{ + "frameworkVersion": "1.2.3", + "channel": "[user-branch]", + "repositoryUrl": "git@github.com:flutter/flutter.git", + "frameworkRevision": "1234567812345678123456781234567812345678", + "frameworkCommitDate": "2024-02-06 22:26:52 +0100", + "engineRevision": "abcdef01abcdef01abcdef01abcdef01abcdef01", + "dartSdkVersion": "1.2.3", + "devToolsVersion": "1.2.3", + "flutterVersion": "1.2.3" +} +'''; + void main() { group('update-packages', () { late FileSystem fileSystem; @@ -91,6 +105,9 @@ void main() { fileSystem = MemoryFileSystem.test(); flutterSdk = fileSystem.directory('flutter')..createSync(); flutterSdk.childFile('version').writeAsStringSync('1.2.3'); + flutterSdk.childDirectory('bin').childDirectory('cache').childFile('flutter.version.json') + ..createSync(recursive: true) + ..writeAsStringSync(kVersionJson); flutter = flutterSdk.childDirectory('packages').childDirectory('flutter') ..createSync(recursive: true); flutterSdk.childDirectory('dev').createSync(recursive: true); diff --git a/packages/flutter_tools/test/general.shard/update_packages_test.dart b/packages/flutter_tools/test/general.shard/update_packages_test.dart index 899131f172..2fbd66d0fa 100644 --- a/packages/flutter_tools/test/general.shard/update_packages_test.dart +++ b/packages/flutter_tools/test/general.shard/update_packages_test.dart @@ -77,6 +77,20 @@ dependencies: git: '''; +const String kVersionJson = ''' +{ + "frameworkVersion": "1.2.3", + "channel": "[user-branch]", + "repositoryUrl": "git@github.com:flutter/flutter.git", + "frameworkRevision": "1234567812345678123456781234567812345678", + "frameworkCommitDate": "2024-02-06 22:26:52 +0100", + "engineRevision": "abcdef01abcdef01abcdef01abcdef01abcdef01", + "dartSdkVersion": "1.2.3", + "devToolsVersion": "1.2.3", + "flutterVersion": "1.2.3" +} +'''; + void main() { late FileSystem fileSystem; late Directory flutterSdk; @@ -88,6 +102,10 @@ void main() { flutterSdk = fileSystem.directory('flutter')..createSync(); // Create version file flutterSdk.childFile('version').writeAsStringSync('1.2.3'); + // Create version JSON file + flutterSdk.childDirectory('bin').childDirectory('cache').childFile('flutter.version.json') + ..createSync(recursive: true) + ..writeAsStringSync(kVersionJson); // Create a pubspec file flutter = flutterSdk.childDirectory('packages').childDirectory('flutter') ..createSync(recursive: true); @@ -144,6 +162,7 @@ void main() { // The version file exists. expect(result.childFile('version'), exists); expect(result.childFile('version').readAsStringSync(), '1.2.3'); + expect(fileSystem.file(fileSystem.path.join(result.path, 'bin', 'cache', 'flutter.version.json')), exists); // The sky_engine package exists expect(fileSystem.directory('${result.path}/bin/cache/pkg/sky_engine'), exists);