Skip to content

Commit 945e11d

Browse files
committed
Better logic
1 parent 10381d0 commit 945e11d

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

lib/src/solver/version_solver.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -610,10 +610,8 @@ class VersionSolver {
610610
return range.constraint as Version?;
611611
}
612612
}
613-
if (_type == SolveType.upgrade) {
614-
return null;
615-
}
616-
return _lockFile.packages[package]?.version;
613+
final locked = _getLocked(package);
614+
return locked?.version;
617615
}
618616

619617
/// Logs [message] in the context of the current selected packages.

test/upgrade/hosted/upgrade_away_from_retracted_test.dart

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,43 @@ void main() {
2020
server.retractPackageVersion('foo', '1.5.0');
2121
await pubUpgrade(output: contains('< foo 1.0.0'));
2222
});
23+
24+
test(
25+
'upgrade will not downgrade if current version is not unlocked',
26+
() async {
27+
final server = await servePackages();
28+
29+
server.serve('foo', '1.0.0');
30+
server.serve('foo', '1.5.0');
31+
32+
server.serve('bar', '1.0.0');
33+
server.serve('bar', '1.5.0');
34+
35+
await d.appDir(dependencies: {'foo': '^1.0.0', 'bar': '^1.0.0'}).create();
36+
37+
await pubGet(
38+
output: allOf(contains('+ foo 1.5.0'), contains('+ bar 1.5.0')),
39+
);
40+
server.retractPackageVersion('foo', '1.5.0');
41+
server.retractPackageVersion('bar', '1.5.0');
42+
43+
await pubUpgrade(
44+
args: ['foo'], // bar stays locked, we are only upgrading foo.
45+
output: allOf(contains('< foo 1.0.0'), isNot(contains('bar'))),
46+
);
47+
},
48+
);
49+
50+
test('downgrade will upgrade if current version is retracted', () async {
51+
final server = await servePackages();
52+
53+
server.serve('foo', '1.0.0');
54+
55+
await d.appDir(dependencies: {'foo': '^1.0.0'}).create();
56+
await pubGet(output: contains('+ foo 1.0.0'));
57+
server.serve('foo', '1.5.0');
58+
59+
server.retractPackageVersion('foo', '1.0.0');
60+
await pubDowngrade(output: contains('> foo 1.5.0'));
61+
});
2362
}

0 commit comments

Comments
 (0)