Skip to content

Commit f1e09a3

Browse files
committed
Don't adjust SDK constraints whose min versions are prerelease
Previously, if the user was using 1.2.3-dev.1 and a package had an SDK constraint ">=1.2.3-dev.2", we would try to create an invalid ">=1.2.3-dev.2 <1.2.3-dev.1" constraint. Closes #1770
1 parent e07196f commit f1e09a3

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

lib/src/pubspec.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,9 @@ class Pubspec {
391391
if (!allowPreReleaseSdk) return false;
392392
if (!sdk.version.isPreRelease) return false;
393393
if (sdkConstraint.includeMax) return false;
394+
if (sdkConstraint.min != null && sdkConstraint.min.isPreRelease) {
395+
return false;
396+
}
394397
if (sdkConstraint.max == null) return false;
395398
if (sdkConstraint.max.isPreRelease) return false;
396399
return sdkConstraint.max.major == sdk.version.major &&

test/version_solver_test.dart

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ void dartSdkConstraint() {
12031203
'SDK is 1.2.3.');
12041204
});
12051205

1206-
test("no existing pre-release constraint", () async {
1206+
test("no max pre-release constraint", () async {
12071207
await d.dir(appPath, [
12081208
await d.pubspec({
12091209
'name': 'myapp',
@@ -1216,6 +1216,20 @@ void dartSdkConstraint() {
12161216
output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
12171217
});
12181218

1219+
test("no min pre-release constraint", () async {
1220+
await d.dir(appPath, [
1221+
await d.pubspec({
1222+
'name': 'myapp',
1223+
'environment': {'sdk': '>=1.2.3-dev.2.0 <2.0.0'}
1224+
})
1225+
]).create();
1226+
1227+
await expectResolves(
1228+
environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
1229+
error: 'Package myapp requires SDK version >=1.2.3-dev.2.0 <2.0.0 '
1230+
'but the current SDK is 1.2.3-dev.1.0.');
1231+
});
1232+
12191233
test("no build release constraints", () async {
12201234
await d.dir(appPath, [
12211235
await d.pubspec({

0 commit comments

Comments
 (0)