Override dependencies of locked packages (#1854)
Partially addresses #1853
diff --git a/lib/src/solver/package_lister.dart b/lib/src/solver/package_lister.dart
index 90c0158..3cbc403 100644
--- a/lib/src/solver/package_lister.dart
+++ b/lib/src/solver/package_lister.dart
@@ -227,6 +227,7 @@
return incompatibilities;
} else {
return pubspec.dependencies.values
+ .where((range) => !_overriddenPackages.contains(range.name))
.map((range) => _dependency(depender, range))
.toList();
}
diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart
index 5d7e0fc..bc9fbfc 100644
--- a/test/version_solver_test.dart
+++ b/test/version_solver_test.dart
@@ -1839,6 +1839,29 @@
await expectResolves(result: {'foo': '0.0.0'});
});
+
+ // Regression test for #1853
+ test("overrides a locked package's dependency", () async {
+ await servePackages((builder) {
+ builder.serve("foo", "1.2.3", deps: {"bar": "1.2.3"});
+ builder.serve("bar", "1.2.3");
+ builder.serve("bar", "0.0.1");
+ });
+
+ await d.appDir({"foo": "any"}).create();
+
+ await expectResolves(result: {'foo': '1.2.3', 'bar': '1.2.3'});
+
+ await d.dir(appPath, [
+ d.pubspec({
+ "name": "myapp",
+ "dependencies": {"foo": "any"},
+ "dependency_overrides": {"bar": '0.0.1'}
+ })
+ ]).create();
+
+ await expectResolves(result: {'foo': '1.2.3', 'bar': '0.0.1'});
+ });
}
void downgrade() {