summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrey Baker <greysteil@gmail.com>2017-09-10 17:26:19 +0100
committerGrey Baker <greysteil@gmail.com>2017-09-10 17:26:53 +0100
commit3cc7b11af7accc74cfa631f7a1e51c2d75e801c4 (patch)
tree8eb985c160fa07354fc8749088c4aee62c2416e6
parent3cf25ba0c8143e4c6e44822a110560b484a58799 (diff)
downloadbundler-3cc7b11af7accc74cfa631f7a1e51c2d75e801c4.tar.gz
Check all dependency requirements when determining if user wants pre-release
-rw-r--r--lib/bundler/resolver.rb7
-rw-r--r--spec/resolver/basic_spec.rb5
-rw-r--r--spec/support/indexes.rb4
3 files changed, 13 insertions, 3 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index e323d4b168..a57f3078df 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -42,7 +42,9 @@ module Bundler
end
def start(requirements)
- @initial_requirements = requirements
+ @prerelease_specified = {}
+ requirements.each {|dep| @prerelease_specified[dep.name] ||= dep.prerelease? }
+
verify_gemfile_dependencies_are_found!(requirements)
dg = @resolver.resolve(requirements, @base_dg)
dg.map(&:payload).
@@ -102,8 +104,7 @@ module Bundler
index = index_for(dependency)
results = index.search(dependency, @base[dependency.name])
- inital_requirement = @initial_requirements.find {|req| req.name == dependency.name }
- if !inital_requirement || !inital_requirement.requirement.prerelease?
+ unless @prerelease_specified[dependency.name]
# Move prereleases to the beginning of the list, so they're considered
# last during resolution.
pre, results = results.partition {|spec| spec.version.prerelease? }
diff --git a/spec/resolver/basic_spec.rb b/spec/resolver/basic_spec.rb
index 3e102841e4..4db119d6f1 100644
--- a/spec/resolver/basic_spec.rb
+++ b/spec/resolver/basic_spec.rb
@@ -61,6 +61,11 @@ RSpec.describe "Resolving" do
should_resolve_as %w[reform-1.0.0 activesupport-2.3.5]
end
+ it "selects a pre-release for sub-dependencies if it's the only option" do
+ dep "need-pre"
+ should_resolve_as %w[need-pre-1.0.0 activesupport-3.0.0.beta1]
+ end
+
it "raises an exception if a child dependency is not resolved" do
@index = a_unresovable_child_index
dep "chef_app_error"
diff --git a/spec/support/indexes.rb b/spec/support/indexes.rb
index f9b0104a16..ba10716114 100644
--- a/spec/support/indexes.rb
+++ b/spec/support/indexes.rb
@@ -141,6 +141,10 @@ module Spec
gem "reform", ["1.0.0"] do
dep "activesupport", ">= 1.0.0.beta1"
end
+
+ gem "need-pre", ["1.0.0"] do
+ dep "activesupport", "~> 3.0.0.beta1"
+ end
end
end