Remove support for PUB_ALLOW_PRERELEASE_SDK (#3612)
diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart
index 7a1527d..937d830 100644
--- a/lib/src/entrypoint.dart
+++ b/lib/src/entrypoint.dart
@@ -347,24 +347,6 @@
}
}
- // Log once about all overridden packages.
- if (warnAboutPreReleaseSdkOverrides) {
- var overriddenPackages = (result.pubspecs.values
- .where((pubspec) => pubspec.dartSdkWasOverridden)
- .map((pubspec) => pubspec.name)
- .toList()
- ..sort())
- .join(', ');
- if (overriddenPackages.isNotEmpty) {
- log.message(log.yellow(
- 'Overriding the upper bound Dart SDK constraint to <=${sdk.version} '
- 'for the following packages:\n\n$overriddenPackages\n\n'
- 'To disable this you can set the PUB_ALLOW_PRERELEASE_SDK system '
- 'environment variable to `false`, or you can silence this message '
- 'by setting it to `quiet`.'));
- }
- }
-
// We have to download files also with --dry-run to ensure we know the
// archive hashes for downloaded files.
final newLockFile = await result.downloadCachedPackages(cache);
diff --git a/lib/src/pubspec.dart b/lib/src/pubspec.dart
index 69b5557..8ac8023 100644
--- a/lib/src/pubspec.dart
+++ b/lib/src/pubspec.dart
@@ -2,8 +2,6 @@
// for details. 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:io';
-
import 'package:collection/collection.dart' hide mapMap;
import 'package:path/path.dart' as path;
import 'package:pub_semver/pub_semver.dart';
@@ -13,12 +11,9 @@
import 'exceptions.dart';
import 'io.dart';
import 'language_version.dart';
-import 'log.dart';
import 'package_name.dart';
import 'pubspec_parse.dart';
-import 'sdk.dart';
import 'system_cache.dart';
-import 'utils.dart';
export 'pubspec_parse.dart' hide PubspecBase;
@@ -28,35 +23,6 @@
final VersionRange _defaultUpperBoundSdkConstraint =
VersionConstraint.parse('<2.0.0') as VersionRange;
-/// Whether or not to allow the pre-release SDK for packages that have an
-/// upper bound Dart SDK constraint of <2.0.0.
-///
-/// If enabled then a Dart SDK upper bound of <2.0.0 is always converted to
-/// <2.0.0-dev.infinity.
-///
-/// This has a default value of `true` but can be overridden with the
-/// PUB_ALLOW_PRERELEASE_SDK system environment variable.
-bool get _allowPreReleaseSdk => _allowPreReleaseSdkValue != 'false';
-
-/// The value of the PUB_ALLOW_PRERELEASE_SDK environment variable, defaulted
-/// to `true`.
-final String _allowPreReleaseSdkValue = () {
- var value =
- Platform.environment['PUB_ALLOW_PRERELEASE_SDK']?.toLowerCase() ?? 'true';
- if (!['true', 'quiet', 'false'].contains(value)) {
- warning(yellow('''
-The environment variable PUB_ALLOW_PRERELEASE_SDK is set as `$value`.
-The expected value is either `true`, `quiet` (true but no logging), or `false`.
-Using a default value of `true`.
-'''));
- value = 'true';
- }
- return value;
-}();
-
-/// Whether or not to warn about pre-release SDK overrides.
-bool get warnAboutPreReleaseSdkOverrides => _allowPreReleaseSdkValue != 'quiet';
-
/// The parsed contents of a pubspec file.
///
/// The fields of a pubspec are, for the most part, validated when they're first
@@ -120,9 +86,6 @@
Map<String, PackageRange>? _devDependencies;
- /// The Dart sdk version this is parsed against.
- final Version _dartSdkVersion;
-
/// The dependency constraints that this package overrides when it is the
/// root package.
///
@@ -178,55 +141,11 @@
/// pubspec.
final bool _includeDefaultSdkConstraint;
- /// Whether or not the SDK version was overridden from <2.0.0 to
- /// <2.0.0-dev.infinity.
- bool get dartSdkWasOverridden => _dartSdkWasOverriddenToAllowPrerelease;
- bool _dartSdkWasOverriddenToAllowPrerelease = false;
-
- /// Whether or not we should override [sdkConstraint] to be <= the user's
- /// current SDK version.
- ///
- /// This is true if the following conditions are met:
- ///
- /// - [_allowPreReleaseSdk] is `true`
- /// - The user's current SDK is a pre-release version.
- /// - The original [sdkConstraint] max version is exclusive (`includeMax`
- /// is `false`).
- /// - The original [sdkConstraint] is not a pre-release version.
- /// - The original [sdkConstraint] matches the exact same major, minor, and
- /// patch versions as the user's current SDK.
- bool _shouldEnableCurrentSdk(VersionRange sdkConstraint) {
- if (!_allowPreReleaseSdk) return false;
- if (!_dartSdkVersion.isPreRelease) return false;
- if (sdkConstraint.includeMax) return false;
- var minSdkConstraint = sdkConstraint.min;
- if (minSdkConstraint != null &&
- minSdkConstraint.isPreRelease &&
- equalsIgnoringPreRelease(sdkConstraint.min!, _dartSdkVersion)) {
- return false;
- }
- var maxSdkConstraint = sdkConstraint.max;
- if (maxSdkConstraint == null) return false;
- if (maxSdkConstraint.max.isPreRelease &&
- !maxSdkConstraint.isFirstPreRelease) {
- return false;
- }
- return equalsIgnoringPreRelease(maxSdkConstraint, _dartSdkVersion);
- }
-
SdkConstraint _interpretDartSdkConstraint(
VersionConstraint originalConstraint, {
required VersionConstraint? defaultUpperBoundConstraint,
}) {
VersionConstraint constraint = originalConstraint;
- if (constraint is VersionRange && _shouldEnableCurrentSdk(constraint)) {
- _dartSdkWasOverriddenToAllowPrerelease = true;
- constraint = VersionRange(
- min: constraint.min,
- includeMin: constraint.includeMin,
- max: _dartSdkVersion,
- includeMax: true);
- }
if (defaultUpperBoundConstraint != null &&
constraint is VersionRange &&
constraint.max == null &&
@@ -370,7 +289,6 @@
Map? fields,
SourceRegistry? sources,
Map<String, SdkConstraint>? sdkConstraints,
- Version? dartSdkVersion,
}) : _dependencies = dependencies == null
? null
: Map.fromIterable(dependencies, key: (range) => range.name),
@@ -386,7 +304,6 @@
_sources = sources ??
((String? name) => throw StateError('No source registry given')),
_overridesFileFields = null,
- _dartSdkVersion = dartSdkVersion ?? sdk.version,
super(
fields == null ? YamlMap() : YamlMap.wrap(fields),
name: name,
@@ -406,11 +323,9 @@
YamlMap? overridesFields,
String? expectedName,
Uri? location,
- Version? dartSdkVersion,
}) : _overridesFileFields = overridesFields,
_includeDefaultSdkConstraint = true,
_givenSdkConstraints = null,
- _dartSdkVersion = dartSdkVersion ?? sdk.version,
super(fields is YamlMap
? fields
: YamlMap.wrap(fields, sourceUrl: location)) {
@@ -436,7 +351,6 @@
Uri? location,
String? overridesFileContents,
Uri? overridesLocation,
- Version? dartSdkVersion,
}) {
late final YamlMap pubspecMap;
YamlMap? overridesFileMap;
@@ -456,7 +370,6 @@
overridesFields: overridesFileMap,
expectedName: expectedName,
location: location,
- dartSdkVersion: dartSdkVersion,
);
}
diff --git a/test/validator/dependency_test.dart b/test/validator/dependency_test.dart
index b3adc34..81694dd 100644
--- a/test/validator/dependency_test.dart
+++ b/test/validator/dependency_test.dart
@@ -506,13 +506,13 @@
await fuschiaPackage('foo', sdk: '>=0.0.0 <3.0.0').create();
await package(
- sdk: '>=2.0.0-dev.50.0 <2.0.1',
+ sdk: '>=2.0.0-dev.50.0 <2.0.2',
deps: {
'foo': {'sdk': 'fuchsia', 'version': '>=1.2.3 <2.0.0'}
},
).create();
- await expectValidationError('sdk: ">=2.0.0 <2.0.1"', environment: {
+ await expectValidationError('sdk: ">=2.0.0 <2.0.2"', environment: {
'FUCHSIA_DART_SDK_ROOT': path.join(d.sandbox, 'fuchsia'),
'_PUB_TEST_SDK_VERSION': '2.0.1-dev.51.0',
});
diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart
index 8ade3f6..a2cbacc 100644
--- a/test/version_solver_test.dart
+++ b/test/version_solver_test.dart
@@ -1089,299 +1089,6 @@
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '2.0.0', 'bar': '2.0.0'}, tries: 2);
});
-
- group('pre-release overrides', () {
- group('for the root package', () {
- test('allow 2.0.0-dev by default', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {
- 'sdk': '>=1.0.0 <2.0.0',
- },
- }),
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '2.0.0-dev.99'});
- });
-
- test('allow pre-release versions of the upper bound', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
- contains('<=1.2.3-dev.1.0'), contains('myapp')));
- });
- });
-
- group('for a dependency', () {
- test('disallow 2.0.0 by default', () async {
- await d.dir('foo', [
- d.rawPubspec({'name': 'foo'}),
- ]).create();
-
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'dependencies': {
- 'foo': {'path': '../foo'}
- },
- 'environment': {
- 'sdk': '>=2.0.0-0 <3.0.0',
- },
- }),
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '2.0.0'},
- error: equalsIgnoringWhitespace('''
- The current Dart SDK version is 2.0.0.
-
- Because myapp depends on foo from path which requires SDK version
- <2.0.0, version solving failed.
- '''));
- });
-
- test('allow 2.0.0-dev by default', () async {
- await d.dir('foo', [
- d.rawPubspec({'name': 'foo'})
- ]).create();
- await d.dir('bar', [
- d.rawPubspec({'name': 'bar'})
- ]).create();
-
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'dependencies': {
- 'foo': {'path': '../foo'},
- 'bar': {'path': '../bar'},
- },
- 'environment': {
- 'sdk': '>=1.0.0 <2.0.0',
- },
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '2.0.0-dev.99'},
- // Log output should mention the PUB_ALLOW_PRERELEASE_SDK environment
- // variable and mention the foo and bar packages specifically.
- output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
- anyOf(contains('bar, foo'))),
- );
- });
- });
-
- test("don't log if PUB_ALLOW_PRERELEASE_SDK is quiet", () async {
- await d.dir('foo', [
- d.rawPubspec({'name': 'foo'})
- ]).create();
-
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'dependencies': {
- 'foo': {'path': '../foo'},
- },
- 'environment': {
- 'sdk': '>=1.0.0 <2.0.0',
- },
- }),
- ]).create();
-
- await expectResolves(
- environment: {
- '_PUB_TEST_SDK_VERSION': '2.0.0-dev.99',
- 'PUB_ALLOW_PRERELEASE_SDK': 'quiet'
- },
- // Log output should not mention the PUB_ALLOW_RELEASE_SDK environment
- // variable.
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')),
- );
- });
-
- test('are disabled if PUB_ALLOW_PRERELEASE_SDK is false', () async {
- await d.dir('foo', [
- d.pubspec({
- 'name': 'foo',
- 'environment': {
- 'sdk': '>=1.0.0 <2.0.0',
- },
- }),
- ]).create();
-
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'dependencies': {
- 'foo': {'path': '../foo'}
- },
- 'environment': {
- 'sdk': '>=1.0.0 <3.0.0',
- },
- })
- ]).create();
-
- await expectResolves(environment: {
- '_PUB_TEST_SDK_VERSION': '2.0.0-dev.99',
- 'PUB_ALLOW_PRERELEASE_SDK': 'false'
- }, error: equalsIgnoringWhitespace('''
- The current Dart SDK version is 2.0.0-dev.99.
-
- Because myapp depends on foo from path which requires SDK version
- >=1.0.0 <2.0.0, version solving failed.
- '''));
- });
-
- group("don't apply if", () {
- test('major SDK versions differ', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <2.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
-
- test('minor SDK versions differ', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.3.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
-
- test('patch SDK versions differ', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.2.4'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
-
- test('SDK max is inclusive', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <=1.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
-
- test("SDK isn't pre-release", () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3'},
- error: equalsIgnoringWhitespace('''
- The current Dart SDK version is 1.2.3.
-
- Because myapp requires SDK version >=1.0.0 <1.2.3, version
- solving failed.
- '''));
- });
-
- test('upper bound is pre-release', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.2.3-dev.2.0'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
-
- test('lower bound is pre-release and matches SDK', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.2.3-dev.2.0 <1.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.3.0'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
-
- test('upper bound has build identifier', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.2.3+1'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3'},
- output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
- });
- });
-
- group('apply if', () {
- test('upper bound is exclusive and matches SDK', () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0 <1.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
- contains('<=1.2.3-dev.1.0'), contains('myapp')));
- });
-
- test("lower bound is pre-release but doesn't match SDK", () async {
- await d.dir(appPath, [
- d.pubspec({
- 'name': 'myapp',
- 'environment': {'sdk': '>=1.0.0-dev.1.0 <1.2.3'}
- })
- ]).create();
-
- await expectResolves(
- environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
- output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
- contains('<=1.2.3-dev.1.0'), contains('myapp')));
- });
- });
- });
}
void sdkConstraint() {