diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | lib/rubygems/dependency_installer.rb | 3 | ||||
-rw-r--r-- | lib/rubygems/request_set.rb | 34 | ||||
-rw-r--r-- | lib/rubygems/resolver.rb | 20 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_installer.rb | 30 | ||||
-rw-r--r-- | test/rubygems/test_gem_request_set.rb | 16 | ||||
-rw-r--r-- | test/rubygems/test_gem_resolver.rb | 33 |
7 files changed, 123 insertions, 20 deletions
@@ -1,3 +1,10 @@ Wed Dec 18 09:00:17 2013 Koichi Sasada <[email protected]> * test/ruby/test_gc.rb (test_expand_heap): allow +/-1 diff. @@ -426,7 +426,8 @@ class Gem::DependencyInstaller if @ignore_dependencies then installer_set.ignore_dependencies = true - request_set.soft_missing = true end composed_set = Gem::Resolver.compose_sets as, installer_set @@ -33,6 +33,12 @@ class Gem::RequestSet attr_reader :git_set # :nodoc: ## # Sets used for resolution attr_reader :sets # :nodoc: @@ -59,17 +65,18 @@ class Gem::RequestSet def initialize *deps @dependencies = deps - @always_install = [] - @dependency_names = {} - @development = false - @git_set = nil - @install_dir = Gem.dir - @requests = [] - @sets = [] - @soft_missing = false - @sorted = nil - @specs = nil - @vendor_set = nil yield self if block_given? end @@ -230,8 +237,9 @@ class Gem::RequestSet set = Gem::Resolver.compose_sets(*@sets) resolver = Gem::Resolver.new @dependencies, set - resolver.development = @development - resolver.soft_missing = @soft_missing @resolver = resolver @@ -32,6 +32,11 @@ class Gem::Resolver attr_accessor :development ## # List of dependencies that could not be found in the configured sources. attr_reader :missing @@ -91,11 +96,12 @@ class Gem::Resolver @set = set || Gem::Resolver::IndexSet.new @needed = needed - @conflicts = [] - @development = false - @missing = [] - @soft_missing = false - @stats = Gem::Resolver::Stats.new end def explain stage, *data # :nodoc: @@ -132,6 +138,8 @@ class Gem::Resolver end def requests s, act, reqs=nil # :nodoc: s.dependencies.reverse_each do |d| next if d.type == :development and not @development reqs.add Gem::Resolver::DependencyRequest.new(d, act) @@ -151,7 +159,7 @@ class Gem::Resolver def resolve @conflicts = [] - needed = RequirementList.new @needed.reverse_each do |n| request = Gem::Resolver::DependencyRequest.new n, nil @@ -1202,6 +1202,36 @@ class TestGemDependencyInstaller < Gem::TestCase assert_resolve %w[d-1 e-1], e1, @d1, @d2 end def util_write_a1_bin write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp| fp.puts "#!/usr/bin/ruby" @@ -202,6 +202,22 @@ DEPENDENCIES rs.sets.map { |set| set.class } end def test_resolve_incompatible a1 = util_spec 'a', 1 a2 = util_spec 'a', 2 @@ -99,6 +99,39 @@ class TestGemResolver < Gem::TestCase assert_equal 2, res.conflicts.length end def test_no_overlap_specificly a = util_spec "a", '1' b = util_spec "b", "1" |