Skip to content

Commit c5fec62

Browse files
committed
Fix: Git refs must enable pre-release selection
Considers a pre-release version at a Git refs is requesting a pre-release version (i.e. opt-in to pre-releases), otherwise we skip valid solutions.
1 parent 09021de commit c5fec62

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/solver.cr

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ module Shards
5454

5555
# pre-releases are opt-in, so we must check that the solution didn't
5656
# select one unless at least one requirement in the selected graph asked
57-
# for it:
57+
# for it, or we install the dependency at a Git refs:
5858
unless @prereleases
5959
packages.each do |package|
6060
next unless Versions.prerelease?(package.version)
61+
next if package.commit
6162

6263
if dependency = @spec.dependencies.find { |d| d.name == package.name }
6364
break if Versions.prerelease?(dependency.version)

test/integration/install_test.cr

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,18 @@ class InstallCommandTest < Minitest::Test
7171
end
7272
end
7373

74+
def test_installs_prerelease_version_at_refs
75+
metadata = {
76+
dependencies: {
77+
unstable: {git: git_url(:unstable), branch: "master"}
78+
}
79+
}
80+
with_shard(metadata) do
81+
run "shards install"
82+
assert_installed "unstable", "0.3.0.beta"
83+
end
84+
end
85+
7486
def test_installs_dependencies_at_locked_version
7587
metadata = {
7688
dependencies: {web: "1.0.0"},

0 commit comments

Comments
 (0)