Skip to content

Commit aca9ce5

Browse files
committed
Respect locks when adding new dependencies
1 parent 124c31a commit aca9ce5

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

spec/integration/install_spec.cr

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,25 @@ describe "install" do
200200
end
201201
end
202202

203+
it "install subdependency of new dependency respecting lock" do
204+
create_git_repository "c"
205+
create_git_release "c", "0.1.0", "name: c\nversion: 0.1.0\ndependencies:\n d:\n git: #{git_path("d")}\n version: 0.1.0\n"
206+
create_git_release "c", "0.2.0", "name: c\nversion: 0.2.0\ndependencies:\n d:\n git: #{git_path("d")}\n version: 0.2.0\n"
207+
create_git_repository "d"
208+
create_git_release "d", "0.1.0", "name: d\nversion: 0.1.0\n"
209+
create_git_release "d", "0.2.0", "name: d\nversion: 0.2.0\n"
210+
211+
metadata = {dependencies: {c: "*", d: "*"}}
212+
lock = {d: "0.1.0"}
213+
214+
with_shard(metadata, lock) do
215+
run "shards install"
216+
217+
assert_installed "c", "0.1.0"
218+
assert_installed "d", "0.1.0"
219+
end
220+
end
221+
203222
it "installs and updates lockfile for added dependencies" do
204223
metadata = {
205224
dependencies: {

src/molinillo_solver.cr

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ module Shards
130130
end
131131

132132
if (locks = @locks) && (locked = locks.find { |dep| dep.name == dependency.name })
133-
matching << locked.version
133+
if Versions.matches?(locked.version, dependency.version)
134+
matching << locked.version
135+
end
134136
end
135137

136138
if matching.size == 1 && matching.first == "HEAD"

0 commit comments

Comments
 (0)