mirror of
https://github.com/flutter/packages.git
synced 2025-06-29 14:18:54 +08:00
[tool] Use ^ for Dart SDK (#5623)
The update-min-sdk command has been using explicitly ranges for the Dart SDK, because that used to be required. Current versions of `pub` no longer require that, and using `^` for Dart ranges is okay, so this updates the tooling to use that format in the future. Also removes the special casing that changed the upper bound from 3 to 4, since we have passed the point where we are generating upper bounds less than 4 anyway. To minimize churn, this doesn't update the existing pubspecs. We can incrementally adopt this going forward as we roll dependencies forward. Fixes https://github.com/flutter/flutter/issues/139806
This commit is contained in:
@ -69,16 +69,8 @@ class UpdateMinSdkCommand extends PackageLoopingCommand {
|
|||||||
YamlEditor(package.pubspecFile.readAsStringSync());
|
YamlEditor(package.pubspecFile.readAsStringSync());
|
||||||
if (dartRange != null &&
|
if (dartRange != null &&
|
||||||
(dartRange.min ?? Version.none) < _dartMinVersion) {
|
(dartRange.min ?? Version.none) < _dartMinVersion) {
|
||||||
Version upperBound = _dartMinVersion.nextMajor;
|
editablePubspec
|
||||||
// pub special-cases 3.0.0 as an upper bound to be treated as 4.0.0, and
|
.update(<String>[environmentKey, dartSdkKey], '^$_dartMinVersion');
|
||||||
// using 3.0.0 is now an error at upload time, so special case it here.
|
|
||||||
if (upperBound.major == 3) {
|
|
||||||
upperBound = upperBound.nextMajor;
|
|
||||||
}
|
|
||||||
editablePubspec.update(
|
|
||||||
<String>[environmentKey, dartSdkKey],
|
|
||||||
VersionRange(min: _dartMinVersion, includeMin: true, max: upperBound)
|
|
||||||
.toString());
|
|
||||||
print('${indentation}Updating Dart minimum to $_dartMinVersion');
|
print('${indentation}Updating Dart minimum to $_dartMinVersion');
|
||||||
}
|
}
|
||||||
if (flutterRange != null &&
|
if (flutterRange != null &&
|
||||||
|
@ -38,98 +38,91 @@ void main() {
|
|||||||
expect(commandError, isA<ArgumentError>());
|
expect(commandError, isA<ArgumentError>());
|
||||||
});
|
});
|
||||||
|
|
||||||
test('updates Dart when only Dart is present', () async {
|
test('updates Dart when only Dart is present, with manual range', () async {
|
||||||
final RepositoryPackage package = createFakePackage(
|
final RepositoryPackage package = createFakePackage(
|
||||||
'a_package', packagesDir,
|
'a_package', packagesDir,
|
||||||
dartConstraint: '>=2.12.0 <4.0.0');
|
dartConstraint: '>=3.0.0 <4.0.0');
|
||||||
|
|
||||||
await runCapturingPrint(runner, <String>[
|
await runCapturingPrint(runner, <String>[
|
||||||
'update-min-sdk',
|
'update-min-sdk',
|
||||||
'--flutter-min',
|
'--flutter-min',
|
||||||
'3.3.0', // Corresponds to Dart 2.18.0
|
'3.13.0', // Corresponds to Dart 3.1.0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
final String dartVersion =
|
final String dartVersion =
|
||||||
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
||||||
expect(dartVersion, '>=2.18.0 <4.0.0');
|
expect(dartVersion, '^3.1.0');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('updates Dart when only Dart is present, with carrot', () async {
|
||||||
|
final RepositoryPackage package =
|
||||||
|
createFakePackage('a_package', packagesDir, dartConstraint: '^3.0.0');
|
||||||
|
|
||||||
|
await runCapturingPrint(runner, <String>[
|
||||||
|
'update-min-sdk',
|
||||||
|
'--flutter-min',
|
||||||
|
'3.13.0', // Corresponds to Dart 3.1.0
|
||||||
|
]);
|
||||||
|
|
||||||
|
final String dartVersion =
|
||||||
|
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
||||||
|
expect(dartVersion, '^3.1.0');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('does not update Dart if it is already higher', () async {
|
test('does not update Dart if it is already higher', () async {
|
||||||
final RepositoryPackage package = createFakePackage(
|
final RepositoryPackage package =
|
||||||
'a_package', packagesDir,
|
createFakePackage('a_package', packagesDir, dartConstraint: '^3.2.0');
|
||||||
dartConstraint: '>=2.19.0 <4.0.0');
|
|
||||||
|
|
||||||
await runCapturingPrint(runner, <String>[
|
await runCapturingPrint(runner, <String>[
|
||||||
'update-min-sdk',
|
'update-min-sdk',
|
||||||
'--flutter-min',
|
'--flutter-min',
|
||||||
'3.3.0', // Corresponds to Dart 2.18.0
|
'3.13.0', // Corresponds to Dart 3.1.0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
final String dartVersion =
|
final String dartVersion =
|
||||||
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
||||||
expect(dartVersion, '>=2.19.0 <4.0.0');
|
expect(dartVersion, '^3.2.0');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('updates both Dart and Flutter when both are present', () async {
|
test('updates both Dart and Flutter when both are present', () async {
|
||||||
final RepositoryPackage package = createFakePackage(
|
final RepositoryPackage package = createFakePackage(
|
||||||
'a_package', packagesDir,
|
'a_package', packagesDir,
|
||||||
isFlutter: true,
|
isFlutter: true,
|
||||||
dartConstraint: '>=2.12.0 <4.0.0',
|
dartConstraint: '>=3.0.0 <4.0.0',
|
||||||
flutterConstraint: '>=2.10.0');
|
flutterConstraint: '>=3.10.0');
|
||||||
|
|
||||||
await runCapturingPrint(runner, <String>[
|
await runCapturingPrint(runner, <String>[
|
||||||
'update-min-sdk',
|
'update-min-sdk',
|
||||||
'--flutter-min',
|
'--flutter-min',
|
||||||
'3.3.0', // Corresponds to Dart 2.18.0
|
'3.13.0', // Corresponds to Dart 3.1.0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
final String dartVersion =
|
final String dartVersion =
|
||||||
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
||||||
final String flutterVersion =
|
final String flutterVersion =
|
||||||
package.parsePubspec().environment?['flutter'].toString() ?? '';
|
package.parsePubspec().environment?['flutter'].toString() ?? '';
|
||||||
expect(dartVersion, '>=2.18.0 <4.0.0');
|
expect(dartVersion, '^3.1.0');
|
||||||
expect(flutterVersion, '>=3.3.0');
|
expect(flutterVersion, '>=3.13.0');
|
||||||
});
|
|
||||||
|
|
||||||
test('handles Flutter 3.10.0', () async {
|
|
||||||
final RepositoryPackage package = createFakePackage(
|
|
||||||
'a_package', packagesDir,
|
|
||||||
isFlutter: true,
|
|
||||||
dartConstraint: '>=2.12.0 <4.0.0',
|
|
||||||
flutterConstraint: '>=2.10.0');
|
|
||||||
|
|
||||||
await runCapturingPrint(runner, <String>[
|
|
||||||
'update-min-sdk',
|
|
||||||
'--flutter-min',
|
|
||||||
'3.10.0', // Corresponds to Dart 3.0.0
|
|
||||||
]);
|
|
||||||
|
|
||||||
final String dartVersion =
|
|
||||||
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
|
||||||
final String flutterVersion =
|
|
||||||
package.parsePubspec().environment?['flutter'].toString() ?? '';
|
|
||||||
expect(dartVersion, '>=3.0.0 <4.0.0');
|
|
||||||
expect(flutterVersion, '>=3.10.0');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('does not update Flutter if it is already higher', () async {
|
test('does not update Flutter if it is already higher', () async {
|
||||||
final RepositoryPackage package = createFakePackage(
|
final RepositoryPackage package = createFakePackage(
|
||||||
'a_package', packagesDir,
|
'a_package', packagesDir,
|
||||||
isFlutter: true,
|
isFlutter: true,
|
||||||
dartConstraint: '>=2.19.0 <4.0.0',
|
dartConstraint: '^3.2.0',
|
||||||
flutterConstraint: '>=3.7.0');
|
flutterConstraint: '>=3.16.0');
|
||||||
|
|
||||||
await runCapturingPrint(runner, <String>[
|
await runCapturingPrint(runner, <String>[
|
||||||
'update-min-sdk',
|
'update-min-sdk',
|
||||||
'--flutter-min',
|
'--flutter-min',
|
||||||
'3.3.0', // Corresponds to Dart 2.18.0
|
'3.13.0', // Corresponds to Dart 3.1.0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
final String dartVersion =
|
final String dartVersion =
|
||||||
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
package.parsePubspec().environment?['sdk'].toString() ?? '';
|
||||||
final String flutterVersion =
|
final String flutterVersion =
|
||||||
package.parsePubspec().environment?['flutter'].toString() ?? '';
|
package.parsePubspec().environment?['flutter'].toString() ?? '';
|
||||||
expect(dartVersion, '>=2.19.0 <4.0.0');
|
expect(dartVersion, '^3.2.0');
|
||||||
expect(flutterVersion, '>=3.7.0');
|
expect(flutterVersion, '>=3.16.0');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user