diff options
author | Grey Baker <greysteil@gmail.com> | 2017-09-10 17:26:19 +0100 |
---|---|---|
committer | Grey Baker <greysteil@gmail.com> | 2017-09-10 17:26:53 +0100 |
commit | 3cc7b11af7accc74cfa631f7a1e51c2d75e801c4 (patch) | |
tree | 8eb985c160fa07354fc8749088c4aee62c2416e6 | |
parent | 3cf25ba0c8143e4c6e44822a110560b484a58799 (diff) | |
download | bundler-3cc7b11af7accc74cfa631f7a1e51c2d75e801c4.tar.gz |
Check all dependency requirements when determining if user wants pre-release
-rw-r--r-- | lib/bundler/resolver.rb | 7 | ||||
-rw-r--r-- | spec/resolver/basic_spec.rb | 5 | ||||
-rw-r--r-- | spec/support/indexes.rb | 4 |
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 |