summaryrefslogtreecommitdiff
path: root/test/rubygems
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-19 00:34:13 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-19 00:34:13 +0000
commita7fa4d5d9aab150ad4b0c3f3217fe444df69f527 (patch)
tree88ab96d22f7228b556337aa7c34042d4fd279394 /test/rubygems
parente7ec3dad907f2c77f17faddb40a98b2ef4523222 (diff)
* lib/rubygems: Update to RubyGems master 6a3d9f9. Changes include:
Compatibly renamed Gem::DependencyResolver to Gem::Resolver. Added support for git gems in gem.deps.rb and Gemfile. Fixed resolver bugs. * test/rubygems: ditto. * lib/rubygems/LICENSE.txt: Updated to license from RubyGems trunk. [ruby-trunk - Bug #9086] * lib/rubygems/commands/which_command.rb: RubyGems now indicates failure when any file is missing. [ruby-trunk - Bug #9004] * lib/rubygems/ext/builder: Extensions are now installed into the extension install directory and the first directory in the require path from the gem. This allows backwards compatibility with msgpack and other gems that calculate full require paths. [ruby-trunk - Bug #9106] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems')
-rw-r--r--test/rubygems/test_gem.rb2
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb4
-rw-r--r--test/rubygems/test_gem_dependency_resolution_error.rb4
-rw-r--r--test/rubygems/test_gem_dependency_resolver_vendor_specification.rb72
-rw-r--r--test/rubygems/test_gem_ext_builder.rb22
-rw-r--r--test/rubygems/test_gem_impossible_dependencies_error.rb4
-rw-r--r--test/rubygems/test_gem_installer.rb14
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb2
-rw-r--r--test/rubygems/test_gem_request_set.rb31
-rw-r--r--test/rubygems/test_gem_request_set_gem_dependency_api.rb199
-rw-r--r--test/rubygems/test_gem_request_set_lockfile.rb4
-rw-r--r--test/rubygems/test_gem_resolver.rb (renamed from test/rubygems/test_gem_dependency_resolver.rb)93
-rw-r--r--test/rubygems/test_gem_resolver_activation_request.rb (renamed from test/rubygems/test_gem_dependency_resolver_activation_request.rb)6
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb (renamed from test/rubygems/test_gem_dependency_resolver_api_set.rb)5
-rw-r--r--test/rubygems/test_gem_resolver_api_specification.rb (renamed from test/rubygems/test_gem_dependency_resolver_api_specification.rb)7
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb (renamed from test/rubygems/test_gem_dependency_resolver_best_set.rb)5
-rw-r--r--test/rubygems/test_gem_resolver_conflict.rb (renamed from test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb)15
-rw-r--r--test/rubygems/test_gem_resolver_dependency_request.rb (renamed from test/rubygems/test_gem_dependency_resolver_dependency_request.rb)4
-rw-r--r--test/rubygems/test_gem_resolver_git_set.rb84
-rw-r--r--test/rubygems/test_gem_resolver_git_specification.rb36
-rw-r--r--test/rubygems/test_gem_resolver_index_set.rb (renamed from test/rubygems/test_gem_dependency_resolver_index_set.rb)5
-rw-r--r--test/rubygems/test_gem_resolver_index_specification.rb (renamed from test/rubygems/test_gem_dependency_resolver_index_specification.rb)19
-rw-r--r--test/rubygems/test_gem_resolver_installed_specification.rb (renamed from test/rubygems/test_gem_dependency_resolver_installed_specification.rb)7
-rw-r--r--test/rubygems/test_gem_resolver_installer_set.rb (renamed from test/rubygems/test_gem_dependency_resolver_installer_set.rb)5
-rw-r--r--test/rubygems/test_gem_resolver_lock_set.rb (renamed from test/rubygems/test_gem_dependency_resolver_lock_set.rb)5
-rw-r--r--test/rubygems/test_gem_resolver_requirement_list.rb19
-rw-r--r--test/rubygems/test_gem_resolver_vendor_set.rb (renamed from test/rubygems/test_gem_dependency_resolver_vendor_set.rb)9
-rw-r--r--test/rubygems/test_gem_resolver_vendor_specification.rb71
-rw-r--r--test/rubygems/test_gem_source.rb4
-rw-r--r--test/rubygems/test_gem_source_git.rb153
-rw-r--r--test/rubygems/test_gem_source_vendor.rb14
-rw-r--r--test/rubygems/test_gem_specification.rb4
-rw-r--r--test/rubygems/test_gem_stub_specification.rb4
-rw-r--r--test/rubygems/test_gem_util.rb11
34 files changed, 745 insertions, 198 deletions
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index fd4d1de5c6..ec7f7299ec 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1120,7 +1120,7 @@ class TestGem < Gem::TestCase
ENV['RUBYGEMS_GEMDEPS'] = "-"
- assert_equal [a,b,c], Gem.detect_gemdeps
+ assert_equal [a,b,c], Gem.detect_gemdeps.sort_by { |s| s.name }
end
LIB_PATH = File.expand_path "../../../lib".untaint, __FILE__.untaint
diff --git a/test/rubygems/test_gem_commands_which_command.rb b/test/rubygems/test_gem_commands_which_command.rb
index b19f204c4a..7ce26c861a 100644
--- a/test/rubygems/test_gem_commands_which_command.rb
+++ b/test/rubygems/test_gem_commands_which_command.rb
@@ -44,7 +44,9 @@ class TestGemCommandsWhichCommand < Gem::TestCase
@cmd.handle_options %w[foo_bar missinglib]
use_ui @ui do
- @cmd.execute
+ assert_raises Gem::MockGemUi::TermError do
+ @cmd.execute
+ end
end
assert_equal "#{@foo_bar.full_gem_path}/lib/foo_bar.rb\n", @ui.output
diff --git a/test/rubygems/test_gem_dependency_resolution_error.rb b/test/rubygems/test_gem_dependency_resolution_error.rb
index 0ac0b06028..0442082e6a 100644
--- a/test/rubygems/test_gem_dependency_resolution_error.rb
+++ b/test/rubygems/test_gem_dependency_resolution_error.rb
@@ -5,7 +5,7 @@ class TestGemDependencyResolutionError < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
@spec = util_spec 'a', 2
@@ -14,7 +14,7 @@ class TestGemDependencyResolutionError < Gem::TestCase
@activated = @DR::ActivationRequest.new @spec, @a2_req
- @conflict = @DR::DependencyConflict.new @a1_req, @activated
+ @conflict = @DR::Conflict.new @a1_req, @activated
@error = Gem::DependencyResolutionError.new @conflict
end
diff --git a/test/rubygems/test_gem_dependency_resolver_vendor_specification.rb b/test/rubygems/test_gem_dependency_resolver_vendor_specification.rb
deleted file mode 100644
index 77d78d1dc7..0000000000
--- a/test/rubygems/test_gem_dependency_resolver_vendor_specification.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-
-class TestGemDependencyResolverVendorSpecification < Gem::TestCase
-
- def setup
- super
-
- @set = Gem::DependencyResolver::VendorSet.new
- @spec = Gem::Specification.new 'a', 1
- end
-
- def test_equals2
- v_spec_a = Gem::DependencyResolver::VendorSpecification.new @set, @spec
-
- assert_equal v_spec_a, v_spec_a
-
- spec_b = Gem::Specification.new 'b', 1
- v_spec_b = Gem::DependencyResolver::VendorSpecification.new @set, spec_b
-
- refute_equal v_spec_a, v_spec_b
-
- v_set = Gem::DependencyResolver::VendorSet.new
- v_spec_s = Gem::DependencyResolver::VendorSpecification.new v_set, @spec
-
- refute_equal v_spec_a, v_spec_s
-
- i_set = Gem::DependencyResolver::IndexSet.new
- source = Gem::Source.new @gem_repo
- i_spec = Gem::DependencyResolver::IndexSpecification.new(
- i_set, 'a', v(1), source, Gem::Platform::RUBY)
-
- refute_equal v_spec_a, i_spec
- end
-
- def test_dependencies
- @spec.add_dependency 'b'
- @spec.add_dependency 'c'
-
- v_spec = Gem::DependencyResolver::VendorSpecification.new @set, @spec
-
- assert_equal [dep('b'), dep('c')], v_spec.dependencies
- end
-
- def test_full_name
- v_spec = Gem::DependencyResolver::VendorSpecification.new @set, @spec
-
- assert_equal 'a-1', v_spec.full_name
- end
-
- def test_name
- v_spec = Gem::DependencyResolver::VendorSpecification.new @set, @spec
-
- assert_equal 'a', v_spec.name
- end
-
- def test_platform
- v_spec = Gem::DependencyResolver::VendorSpecification.new @set, @spec
-
- assert_equal Gem::Platform::RUBY, v_spec.platform
- end
-
- def test_version
- spec = Gem::Specification.new 'a', 1
-
- v_spec = Gem::DependencyResolver::VendorSpecification.new @set, spec
-
- assert_equal v(1), v_spec.version
- end
-
-end
-
diff --git a/test/rubygems/test_gem_ext_builder.rb b/test/rubygems/test_gem_ext_builder.rb
index d7e5880a96..3da9bc9e60 100644
--- a/test/rubygems/test_gem_ext_builder.rb
+++ b/test/rubygems/test_gem_ext_builder.rb
@@ -98,22 +98,26 @@ install:
end
def test_build_extensions
- @spec.extensions << 'extconf.rb'
+ @spec.extensions << 'ext/extconf.rb'
- FileUtils.mkdir_p @spec.gem_dir
+ ext_dir = File.join @spec.gem_dir, 'ext'
+
+ FileUtils.mkdir_p ext_dir
- extconf_rb = File.join @spec.gem_dir, 'extconf.rb'
+ extconf_rb = File.join ext_dir, 'extconf.rb'
open extconf_rb, 'w' do |f|
f.write <<-'RUBY'
- open 'Makefile', 'w' do |f|
- f.puts "clean:\n\techo cleaned"
- f.puts "default:\n\techo built"
- f.puts "install:\n\techo installed"
- end
+ require 'mkmf'
+
+ create_makefile 'a'
RUBY
end
+ ext_lib_dir = File.join ext_dir, 'lib'
+ FileUtils.mkdir ext_lib_dir
+ FileUtils.touch File.join ext_lib_dir, 'a.rb'
+
use_ui @ui do
@builder.build_extensions
end
@@ -121,6 +125,8 @@ install:
assert_path_exists @spec.extension_install_dir
assert_path_exists @spec.gem_build_complete_path
assert_path_exists File.join @spec.extension_install_dir, 'gem_make.out'
+ assert_path_exists File.join @spec.extension_install_dir, 'a.rb'
+ assert_path_exists File.join @spec.gem_dir, 'lib', 'a.rb'
end
def test_build_extensions_none
diff --git a/test/rubygems/test_gem_impossible_dependencies_error.rb b/test/rubygems/test_gem_impossible_dependencies_error.rb
index 9a0472fa36..f61b86e490 100644
--- a/test/rubygems/test_gem_impossible_dependencies_error.rb
+++ b/test/rubygems/test_gem_impossible_dependencies_error.rb
@@ -15,10 +15,10 @@ class TestGemImpossibleDependenciesError < Gem::TestCase
net_ssh_2_6_5 =
dependency_request dep('net-ssh', '~> 2.2.2'), 'net-ssh', '2.6.5', request
- conflict1 = Gem::DependencyResolver::DependencyConflict.new \
+ conflict1 = Gem::Resolver::Conflict.new \
net_ssh_2_6_5, net_ssh_2_6_5.requester
- conflict2 = Gem::DependencyResolver::DependencyConflict.new \
+ conflict2 = Gem::Resolver::Conflict.new \
net_ssh_2_2_2, net_ssh_2_2_2.requester
conflicts << [net_ssh_2_6_5.requester.spec, conflict1]
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 0abb58b655..f0dd52cd36 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -1004,6 +1004,10 @@ gem 'other', version
skip '1.9.2 and earlier mkmf.rb does not create TOUCH' if
RUBY_VERSION < '1.9.3'
+ if RUBY_VERSION == "1.9.3" and RUBY_PATCHLEVEL <= 194
+ skip "TOUCH was introduced into 1.9.3 after p194"
+ end
+
@spec.require_paths = ["."]
@spec.extensions << "extconf.rb"
@@ -1038,8 +1042,14 @@ gem 'other', version
puts '-' * 78
puts File.read File.join(@gemhome, 'gems', 'a-2', 'Makefile')
puts '-' * 78
- puts File.read File.join(@gemhome, 'gems', 'a-2', 'gem_make.out')
- puts '-' * 78
+
+ path = File.join(@gemhome, 'gems', 'a-2', 'gem_make.out')
+
+ if File.exists?(path)
+ puts File.read(path)
+ puts '-' * 78
+ end
+
raise
end
diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb
index 5f36e71807..7e6d9c7693 100644
--- a/test/rubygems/test_gem_remote_fetcher.rb
+++ b/test/rubygems/test_gem_remote_fetcher.rb
@@ -165,7 +165,7 @@ gems:
def test_api_endpoint
uri = URI.parse "http://gems.example.com/foo"
target = MiniTest::Mock.new
- target.expect :target, "http://blah.com"
+ target.expect :target, "blah.com"
dns = MiniTest::Mock.new
dns.expect :getresource, target, [String, Object]
diff --git a/test/rubygems/test_gem_request_set.rb b/test/rubygems/test_gem_request_set.rb
index 9b215c2bc7..531b6c09d1 100644
--- a/test/rubygems/test_gem_request_set.rb
+++ b/test/rubygems/test_gem_request_set.rb
@@ -7,7 +7,7 @@ class TestGemRequestSet < Gem::TestCase
Gem::RemoteFetcher.fetcher = @fetcher = Gem::FakeFetcher.new
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
end
def test_gem
@@ -69,6 +69,7 @@ class TestGemRequestSet < Gem::TestCase
assert_equal [dep('a')], rs.dependencies
+ assert rs.git_set
assert rs.vendor_set
end
@@ -100,6 +101,32 @@ class TestGemRequestSet < Gem::TestCase
assert_equal ["a-2", "b-2"], names
end
+ def test_resolve_git
+ name, _, repository, = git_gem
+
+ rs = Gem::RequestSet.new
+
+ Tempfile.open 'gem.deps.rb' do |io|
+ io.puts <<-gems_deps_rb
+ gem "#{name}", :git => "#{repository}"
+ gems_deps_rb
+
+ io.flush
+
+ rs.load_gemdeps io.path
+ end
+
+ res = rs.resolve
+ assert_equal 1, res.size
+
+ names = res.map { |s| s.full_name }.sort
+
+ assert_equal %w[a-1], names
+
+ assert_equal [@DR::IndexSet, @DR::GitSet, @DR::VendorSet],
+ rs.sets.map { |set| set.class }
+ end
+
def test_resolve_incompatible
a1 = util_spec 'a', 1
a2 = util_spec 'a', 2
@@ -142,7 +169,7 @@ class TestGemRequestSet < Gem::TestCase
assert_equal ["a-1", "b-2"], names
- assert_equal [@DR::IndexSet, @DR::VendorSet],
+ assert_equal [@DR::IndexSet, @DR::GitSet, @DR::VendorSet],
rs.sets.map { |set| set.class }
end
diff --git a/test/rubygems/test_gem_request_set_gem_dependency_api.rb b/test/rubygems/test_gem_request_set_gem_dependency_api.rb
index 154449dde2..4286a761cb 100644
--- a/test/rubygems/test_gem_request_set_gem_dependency_api.rb
+++ b/test/rubygems/test_gem_request_set_gem_dependency_api.rb
@@ -10,9 +10,11 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
@set = Gem::RequestSet.new
- @vendor_set = Gem::DependencyResolver::VendorSet.new
+ @git_set = Gem::Resolver::GitSet.new
+ @vendor_set = Gem::Resolver::VendorSet.new
@gda = @GDA.new @set, 'gem.deps.rb'
+ @gda.instance_variable_set :@git_set, @git_set
@gda.instance_variable_set :@vendor_set, @vendor_set
end
@@ -48,6 +50,18 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
Gem.instance_variables.include? :@ruby_version
end
+ def test_gemspec_without_group
+ @gda.send :add_dependencies, [:development], [dep('a', '= 1')]
+
+ assert_equal [dep('a', '= 1')], @set.dependencies
+
+ @gda.without_groups << :development
+
+ @gda.send :add_dependencies, [:development], [dep('b', '= 2')]
+
+ assert_equal [dep('a', '= 1')], @set.dependencies
+ end
+
def test_gem
@gda.gem 'a'
@@ -56,6 +70,65 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
assert_equal %w[a], @gda.requires['a']
end
+ def test_gem_git
+ @gda.gem 'a', :git => 'git/a'
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[git/a master], @git_set.repositories['a']
+ end
+
+ def test_gem_git_branch
+ @gda.gem 'a', :git => 'git/a', :branch => 'other', :tag => 'v1'
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[git/a other], @git_set.repositories['a']
+ end
+
+ def test_gem_git_gist
+ @gda.gem 'a', :gist => 'a'
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[https://gist.github.com/a.git master],
+ @git_set.repositories['a']
+ end
+
+ def test_gem_git_ref
+ @gda.gem 'a', :git => 'git/a', :ref => 'abcd123', :branch => 'other'
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[git/a abcd123], @git_set.repositories['a']
+ end
+
+ def test_gem_git_submodules
+ @gda.gem 'a', :git => 'git/a', :submodules => true
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[git/a master], @git_set.repositories['a']
+ assert_equal %w[git/a], @git_set.need_submodules.keys
+ end
+
+ def test_gem_git_tag
+ @gda.gem 'a', :git => 'git/a', :tag => 'v1'
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[git/a v1], @git_set.repositories['a']
+ end
+
+ def test_gem_github
+ @gda.gem 'a', :github => 'example/repository'
+
+ assert_equal [dep('a')], @set.dependencies
+
+ assert_equal %w[git://github.com/example/repository.git master],
+ @git_set.repositories['a']
+ end
+
def test_gem_group
@gda.gem 'a', :group => :test
@@ -284,6 +357,130 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
assert_equal [:a, :b, :c, :d], groups.sort_by { |group| group.to_s }
end
+ def test_gemspec
+ spec = util_spec 'a', 1, 'b' => 2
+ spec.add_development_dependency 'c', 3
+
+ open 'a.gemspec', 'w' do |io|
+ io.write spec.to_ruby_for_cache
+ end
+
+ @gda.gemspec
+
+ assert_equal [dep('b', '= 2'), dep('c', '=3')], @set.dependencies
+
+ assert_equal %w[a], @gda.requires['a']
+ end
+
+ def test_gemspec_bad
+ FileUtils.touch 'a.gemspec'
+
+ e = assert_raises ArgumentError do
+ capture_io do
+ @gda.gemspec
+ end
+ end
+
+ assert_equal 'invalid gemspec ./a.gemspec', e.message
+ end
+
+ def test_gemspec_development_group
+ spec = util_spec 'a', 1, 'b' => 2
+ spec.add_development_dependency 'c', 3
+
+ open 'a.gemspec', 'w' do |io|
+ io.write spec.to_ruby_for_cache
+ end
+
+ @gda.without_groups << :other
+
+ @gda.gemspec :development_group => :other
+
+ assert_equal [dep('b', '= 2')], @set.dependencies
+
+ assert_equal %w[a], @gda.requires['a']
+ end
+
+ def test_gemspec_multiple
+ open 'a.gemspec', 'w' do |io|
+ spec = util_spec 'a', 1, 'b' => 2
+ io.write spec.to_ruby_for_cache
+ end
+
+ open 'b.gemspec', 'w' do |io|
+ spec = util_spec 'b', 2, 'c' => 3
+ io.write spec.to_ruby_for_cache
+ end
+
+ e = assert_raises ArgumentError do
+ @gda.gemspec
+ end
+
+ assert_equal "found multiple gemspecs at #{@tempdir}, use the name: option to specify the one you want", e.message
+ end
+
+ def test_gemspec_name
+ open 'a.gemspec', 'w' do |io|
+ spec = util_spec 'a', 1, 'b' => 2
+ io.write spec.to_ruby_for_cache
+ end
+
+ open 'b.gemspec', 'w' do |io|
+ spec = util_spec 'b', 2, 'c' => 3
+ io.write spec.to_ruby_for_cache
+ end
+
+ @gda.gemspec :name => 'b'
+
+ assert_equal [dep('c', '= 3')], @set.dependencies
+ end
+
+ def test_gemspec_named
+ spec = util_spec 'a', 1, 'b' => 2
+
+ open 'other.gemspec', 'w' do |io|
+ io.write spec.to_ruby_for_cache
+ end
+
+ @gda.gemspec
+
+ assert_equal [dep('b', '= 2')], @set.dependencies
+ end
+
+ def test_gemspec_none
+ e = assert_raises ArgumentError do
+ @gda.gemspec
+ end
+
+ assert_equal "no gemspecs found at #{@tempdir}", e.message
+ end
+
+ def test_gemspec_path
+ spec = util_spec 'a', 1, 'b' => 2
+
+ FileUtils.mkdir 'other'
+
+ open 'other/a.gemspec', 'w' do |io|
+ io.write spec.to_ruby_for_cache
+ end
+
+ @gda.gemspec :path => 'other'
+
+ assert_equal [dep('b', '= 2')], @set.dependencies
+ end
+
+ def test_git
+ @gda.git 'git://example/repo.git' do
+ @gda.gem 'a'
+ @gda.gem 'b'
+ end
+
+ assert_equal [dep('a'), dep('b')], @set.dependencies
+
+ assert_equal %w[git://example/repo.git master], @git_set.repositories['a']
+ assert_equal %w[git://example/repo.git master], @git_set.repositories['b']
+ end
+
def test_group
@gda.group :test do
@gda.gem 'a'
diff --git a/test/rubygems/test_gem_request_set_lockfile.rb b/test/rubygems/test_gem_request_set_lockfile.rb
index 9e947f54ec..fcd4ecfaf7 100644
--- a/test/rubygems/test_gem_request_set_lockfile.rb
+++ b/test/rubygems/test_gem_request_set_lockfile.rb
@@ -13,7 +13,7 @@ class TestGemRequestSetLockfile < Gem::TestCase
@set = Gem::RequestSet.new
- @vendor_set = Gem::DependencyResolver::VendorSet.new
+ @vendor_set = Gem::Resolver::VendorSet.new
@set.instance_variable_set :@vendor_set, @vendor_set
@@ -96,7 +96,7 @@ DEPENDENCIES
assert_equal [Gem::Platform::RUBY], @lockfile.platforms
lockfile_set = @set.sets.find do |set|
- Gem::DependencyResolver::LockSet === set
+ Gem::Resolver::LockSet === set
end
assert lockfile_set, 'could not find a LockSet'
diff --git a/test/rubygems/test_gem_dependency_resolver.rb b/test/rubygems/test_gem_resolver.rb
index ceecab6d55..80769de8cf 100644
--- a/test/rubygems/test_gem_dependency_resolver.rb
+++ b/test/rubygems/test_gem_resolver.rb
@@ -1,12 +1,11 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolver < Gem::TestCase
+class TestGemResolver < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
end
def make_dep(name, *req)
@@ -30,13 +29,17 @@ class TestGemDependencyResolver < Gem::TestCase
flunk e.message
end
+ def test_self_compatibility
+ assert_same Gem::Resolver, Gem::DependencyResolver
+ end
+
def test_self_compose_sets_multiple
index_set = @DR::IndexSet.new
vendor_set = @DR::VendorSet.new
composed = @DR.compose_sets index_set, vendor_set
- assert_kind_of Gem::DependencyResolver::ComposedSet, composed
+ assert_kind_of Gem::Resolver::ComposedSet, composed
assert_equal [index_set, vendor_set], composed.sets
end
@@ -66,13 +69,13 @@ class TestGemDependencyResolver < Gem::TestCase
def test_handle_conflict
a1 = util_spec 'a', 1
- r1 = Gem::DependencyResolver::DependencyRequest.new dep('a', '= 1'), nil
- r2 = Gem::DependencyResolver::DependencyRequest.new dep('a', '= 2'), nil
- r3 = Gem::DependencyResolver::DependencyRequest.new dep('a', '= 3'), nil
+ r1 = Gem::Resolver::DependencyRequest.new dep('a', '= 1'), nil
+ r2 = Gem::Resolver::DependencyRequest.new dep('a', '= 2'), nil
+ r3 = Gem::Resolver::DependencyRequest.new dep('a', '= 3'), nil
- existing = Gem::DependencyResolver::ActivationRequest.new a1, r1, false
+ existing = Gem::Resolver::ActivationRequest.new a1, r1, false
- res = Gem::DependencyResolver.new [a1]
+ res = Gem::Resolver.new [a1]
res.handle_conflict r2, existing
res.handle_conflict r2, existing
@@ -92,7 +95,7 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a, b)
- res = Gem::DependencyResolver.new(deps, s)
+ res = Gem::Resolver.new(deps, s)
assert_resolves_to [a, b], res
end
@@ -109,7 +112,7 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a, b, c)
- res = Gem::DependencyResolver.new(deps, s)
+ res = Gem::Resolver.new(deps, s)
assert_resolves_to [a, b, c], res
end
@@ -122,13 +125,13 @@ class TestGemDependencyResolver < Gem::TestCase
ad = make_dep "a"
- res = Gem::DependencyResolver.new([ad], s)
+ res = Gem::Resolver.new([ad], s)
assert_resolves_to [a2], res
end
def test_picks_best_platform
- is = Gem::DependencyResolver::IndexSpecification
+ is = Gem::Resolver::IndexSpecification
unknown = Gem::Platform.new 'unknown'
a2_p1 = a3_p2 = nil
@@ -153,7 +156,7 @@ class TestGemDependencyResolver < Gem::TestCase
ad = make_dep "a"
- res = Gem::DependencyResolver.new([ad], s)
+ res = Gem::Resolver.new([ad], s)
assert_resolves_to [a2_p1], res
end
@@ -169,7 +172,7 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a1, b1, c1)
- res = Gem::DependencyResolver.new([ad, bd], s)
+ res = Gem::Resolver.new([ad, bd], s)
assert_resolves_to [a1, b1, c1], res
end
@@ -186,17 +189,9 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a1, b1, c1, c2)
- res = Gem::DependencyResolver.new([ad, bd], s)
+ res = Gem::Resolver.new([ad, bd], s)
assert_resolves_to [a1, b1, c1], res
-
- cons = res.conflicts
-
- assert_equal 1, cons.size
- con = cons.first
-
- assert_equal "c (= 1)", con.dependency.to_s
- assert_equal "c-2", con.activated.full_name
end
def test_conflict_resolution_only_effects_correct_spec
@@ -214,7 +209,7 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a1, b1, d3, d4, c1, c2)
- res = Gem::DependencyResolver.new([ad, bd], s)
+ res = Gem::Resolver.new([ad, bd], s)
assert_resolves_to [a1, b1, c1, d4], res
@@ -239,31 +234,31 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a1, b1, c1, c2)
- r = Gem::DependencyResolver.new([ad, bd], s)
+ r = Gem::Resolver.new([ad, bd], s)
e = assert_raises Gem::DependencyResolutionError do
r.resolve
end
- deps = [make_dep("c", "= 2"), make_dep("c", "= 1")]
+ deps = [make_dep("c", "= 1"), make_dep("c", "= 2")]
assert_equal deps, e.conflicting_dependencies
con = e.conflict
act = con.activated
- assert_equal "c-1", act.spec.full_name
+ assert_equal "c-2", act.spec.full_name
parent = act.parent
- assert_equal "a-1", parent.spec.full_name
+ assert_equal "b-1", parent.spec.full_name
act = con.requester
- assert_equal "b-1", act.spec.full_name
+ assert_equal "a-1", act.spec.full_name
end
def test_raises_when_a_gem_is_missing
ad = make_dep "a"
- r = Gem::DependencyResolver.new([ad], set)
+ r = Gem::Resolver.new([ad], set)
e = assert_raises Gem::UnsatisfiableDepedencyError do
r.resolve
@@ -280,7 +275,7 @@ class TestGemDependencyResolver < Gem::TestCase
ad = make_dep "a", "= 3"
- r = Gem::DependencyResolver.new([ad], set(a1))
+ r = Gem::Resolver.new([ad], set(a1))
e = assert_raises Gem::UnsatisfiableDepedencyError do
r.resolve
@@ -293,7 +288,7 @@ class TestGemDependencyResolver < Gem::TestCase
a1 = util_spec "a", "1"
ad = make_dep "a", "= 3"
- r = Gem::DependencyResolver.new([ad], set(a1))
+ r = Gem::Resolver.new([ad], set(a1))
e = assert_raises Gem::UnsatisfiableDepedencyError do
r.resolve
@@ -310,7 +305,7 @@ class TestGemDependencyResolver < Gem::TestCase
ad = make_dep "a", "= 1"
- r = Gem::DependencyResolver.new([ad], set(a1))
+ r = Gem::Resolver.new([ad], set(a1))
e = assert_raises Gem::UnsatisfiableDepedencyError do
r.resolve
@@ -333,7 +328,7 @@ class TestGemDependencyResolver < Gem::TestCase
ad = make_dep "a"
bd = make_dep "b"
- r = Gem::DependencyResolver.new([ad, bd], s)
+ r = Gem::Resolver.new([ad, bd], s)
e = assert_raises Gem::DependencyResolutionError do
r.resolve
@@ -345,11 +340,11 @@ class TestGemDependencyResolver < Gem::TestCase
assert_equal req('>= 0'), dependency.requirement
activated = e.conflict.activated
- assert_equal 'c-2', activated.full_name
+ assert_equal 'c-1', activated.full_name
- assert_equal dep('c', '>= 2'), activated.request.dependency
+ assert_equal dep('c', '= 1'), activated.request.dependency
- assert_equal [dep('c', '= 1'), dep('c', '>= 2')],
+ assert_equal [dep('c', '>= 2'), dep('c', '= 1')],
e.conflict.conflicting_dependencies
end
@@ -363,7 +358,7 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a1, b1, c1)
- r = Gem::DependencyResolver.new([ad, bd], s)
+ r = Gem::Resolver.new([ad, bd], s)
assert_resolves_to [a1, b1, c1], r
end
@@ -382,13 +377,13 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(lib1, rails, ap, rack100, rack101)
- r = Gem::DependencyResolver.new([d1, d2], s)
+ r = Gem::Resolver.new([d1, d2], s)
assert_resolves_to [rails, ap, rack101, lib1], r
# check it with the deps reverse too
- r = Gem::DependencyResolver.new([d2, d1], s)
+ r = Gem::Resolver.new([d2, d1], s)
assert_resolves_to [lib1, rack101, rails, ap], r
end
@@ -405,7 +400,7 @@ class TestGemDependencyResolver < Gem::TestCase
s = set(a1, a2, a3, a4)
- r = Gem::DependencyResolver.new([d1, d2, d3], s)
+ r = Gem::Resolver.new([d1, d2, d3], s)
assert_raises Gem::DependencyResolutionError do
r.resolve
@@ -423,7 +418,7 @@ class TestGemDependencyResolver < Gem::TestCase
a_dep = dep 'a', '~> 1.0'
b_dep = dep 'b'
- r = Gem::DependencyResolver.new [a_dep, b_dep], s
+ r = Gem::Resolver.new [a_dep, b_dep], s
assert_raises Gem::DependencyResolutionError do
r.resolve
@@ -444,7 +439,7 @@ class TestGemDependencyResolver < Gem::TestCase
a_dep = dep 'a', '= 1'
- r = Gem::DependencyResolver.new [a_dep], s
+ r = Gem::Resolver.new [a_dep], s
assert_resolves_to [a1, b1, c1], r
end
@@ -461,7 +456,7 @@ class TestGemDependencyResolver < Gem::TestCase
a_dep = dep 'a', '~> 1.0'
b_dep = dep 'b'
- r = Gem::DependencyResolver.new [a_dep, b_dep], s
+ r = Gem::Resolver.new [a_dep, b_dep], s
assert_resolves_to [a1, b1], r
end
@@ -484,7 +479,7 @@ class TestGemDependencyResolver < Gem::TestCase
d1 = make_dep "activemerchant"
d2 = make_dep "actionmailer"
- r = Gem::DependencyResolver.new([d1, d2], s)
+ r = Gem::Resolver.new([d1, d2], s)
assert_resolves_to [merch, mail, sup1], r
end
@@ -502,13 +497,13 @@ class TestGemDependencyResolver < Gem::TestCase
p1 = make_dep "b", "> 0"
p2 = make_dep "d", "> 0"
- r = Gem::DependencyResolver.new([p1, p2], s)
+ r = Gem::Resolver.new([p1, p2], s)
assert_resolves_to [b1, c1, d2], r
end
def test_select_local_platforms
- r = Gem::DependencyResolver.new nil, nil
+ r = Gem::Resolver.new nil, nil
a1 = util_spec 'a', 1
a1_p1 = util_spec 'a', 1 do |s| s.platform = Gem::Platform.local end
@@ -526,7 +521,7 @@ class TestGemDependencyResolver < Gem::TestCase
ad = make_dep "a", "= 1"
- r = Gem::DependencyResolver.new([ad], set(a1))
+ r = Gem::Resolver.new([ad], set(a1))
e = assert_raises Gem::UnsatisfiableDepedencyError do
r.resolve
diff --git a/test/rubygems/test_gem_dependency_resolver_activation_request.rb b/test/rubygems/test_gem_resolver_activation_request.rb
index ac554d128c..54de6bf16a 100644
--- a/test/rubygems/test_gem_dependency_resolver_activation_request.rb
+++ b/test/rubygems/test_gem_resolver_activation_request.rb
@@ -1,11 +1,11 @@
require 'rubygems/test_case'
-class TestGemDependencyResolverActivationRequest < Gem::TestCase
+class TestGemResolverActivationRequest < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
@dep = @DR::DependencyRequest.new dep('a', '>= 0'), nil
@@ -36,7 +36,7 @@ class TestGemDependencyResolverActivationRequest < Gem::TestCase
end
def test_installed_eh
- v_spec = Gem::DependencyResolver::VendorSpecification.new nil, @a3
+ v_spec = Gem::Resolver::VendorSpecification.new nil, @a3
@req = @DR::ActivationRequest.new v_spec, @dep, [@a1, @a2]
diff --git a/test/rubygems/test_gem_dependency_resolver_api_set.rb b/test/rubygems/test_gem_resolver_api_set.rb
index ef99b6ca7f..976d861cdf 100644
--- a/test/rubygems/test_gem_dependency_resolver_api_set.rb
+++ b/test/rubygems/test_gem_resolver_api_set.rb
@@ -1,12 +1,11 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverAPISet < Gem::TestCase
+class TestGemResolverAPISet < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
end
def test_initialize
diff --git a/test/rubygems/test_gem_dependency_resolver_api_specification.rb b/test/rubygems/test_gem_resolver_api_specification.rb
index cdbecec822..e61d30c7c6 100644
--- a/test/rubygems/test_gem_dependency_resolver_api_specification.rb
+++ b/test/rubygems/test_gem_resolver_api_specification.rb
@@ -1,10 +1,9 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverAPISpecification < Gem::TestCase
+class TestGemResolverAPISpecification < Gem::TestCase
def test_initialize
- set = Gem::DependencyResolver::APISet.new
+ set = Gem::Resolver::APISet.new
data = {
:name => 'rails',
:number => '3.0.3',
@@ -15,7 +14,7 @@ class TestGemDependencyResolverAPISpecification < Gem::TestCase
],
}
- spec = Gem::DependencyResolver::APISpecification.new set, data
+ spec = Gem::Resolver::APISpecification.new set, data
assert_equal 'rails', spec.name
assert_equal Gem::Version.new('3.0.3'), spec.version
diff --git a/test/rubygems/test_gem_dependency_resolver_best_set.rb b/test/rubygems/test_gem_resolver_best_set.rb
index 20fbf4514f..5bcff4aca7 100644
--- a/test/rubygems/test_gem_dependency_resolver_best_set.rb
+++ b/test/rubygems/test_gem_resolver_best_set.rb
@@ -1,12 +1,11 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverBestSet < Gem::TestCase
+class TestGemResolverBestSet < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
end
def test_find_all_index
diff --git a/test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb b/test/rubygems/test_gem_resolver_conflict.rb
index 68e17f8a98..3ae2a7cf5f 100644
--- a/test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb
+++ b/test/rubygems/test_gem_resolver_conflict.rb
@@ -1,7 +1,10 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverDependencyConflict < Gem::TestCase
+class TestGemResolverConflict < Gem::TestCase
+
+ def test_self_compatibility
+ assert_same Gem::Resolver::Conflict, Gem::Resolver::DependencyConflict
+ end
def test_explanation
root =
@@ -10,7 +13,7 @@ class TestGemDependencyResolverDependencyConflict < Gem::TestCase
dependency_request dep('net-ssh', '>= 2.6.5'), 'net-ssh', '2.2.2', root
conflict =
- Gem::DependencyResolver::DependencyConflict.new child, child.requester
+ Gem::Resolver::Conflict.new child, child.requester
expected = <<-EXPECTED
Activated net-ssh-2.2.2 instead of (>= 2.6.5) via:
@@ -21,7 +24,7 @@ class TestGemDependencyResolverDependencyConflict < Gem::TestCase
end
def test_explanation_user_request
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
spec = util_spec 'a', 2
@@ -30,7 +33,7 @@ class TestGemDependencyResolverDependencyConflict < Gem::TestCase
activated = @DR::ActivationRequest.new spec, a2_req
- conflict = @DR::DependencyConflict.new a1_req, activated
+ conflict = @DR::Conflict.new a1_req, activated
expected = <<-EXPECTED
Activated a-2 instead of (= 1) via:
@@ -47,7 +50,7 @@ class TestGemDependencyResolverDependencyConflict < Gem::TestCase
dependency_request dep('net-ssh', '>= 2.6.5'), 'net-ssh', '2.2.2', root
conflict =
- Gem::DependencyResolver::DependencyConflict.new child, nil
+ Gem::Resolver::Conflict.new child, nil
assert_equal %w[net-ssh-2.2.2 rye-0.9.8], conflict.request_path
end
diff --git a/test/rubygems/test_gem_dependency_resolver_dependency_request.rb b/test/rubygems/test_gem_resolver_dependency_request.rb
index f5b3a6960e..e1a98826fb 100644
--- a/test/rubygems/test_gem_dependency_resolver_dependency_request.rb
+++ b/test/rubygems/test_gem_resolver_dependency_request.rb
@@ -1,11 +1,11 @@
require 'rubygems/test_case'
-class TestGemDependencyResolverDependencyRequest < Gem::TestCase
+class TestGemResolverDependencyRequest < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver::DependencyRequest
+ @DR = Gem::Resolver::DependencyRequest
end
def test_requirement
diff --git a/test/rubygems/test_gem_resolver_git_set.rb b/test/rubygems/test_gem_resolver_git_set.rb
new file mode 100644
index 0000000000..6943df9ec8
--- /dev/null
+++ b/test/rubygems/test_gem_resolver_git_set.rb
@@ -0,0 +1,84 @@
+require 'rubygems/test_case'
+
+class TestGemResolverGitSet < Gem::TestCase
+
+ def setup
+ super
+
+ @set = Gem::Resolver::GitSet.new
+
+ @reqs = Gem::Resolver::RequirementList.new
+ end
+
+ def test_add_git_gem
+ name, version, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', false
+
+ dependency = dep 'a'
+
+ specs = @set.find_all dependency
+
+ assert_equal "#{name}-#{version}", specs.first.full_name
+
+ refute @set.need_submodules[repository]
+ end
+
+ def test_add_git_gem_submodules
+ name, _, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', true
+
+ dependency = dep 'a'
+
+ refute_empty @set.find_all dependency
+
+ assert @set.need_submodules[repository]
+ end
+
+ def test_find_all
+ name, _, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', false
+
+ dependency = dep 'a', '~> 1.0'
+ req = Gem::Resolver::ActivationRequest.new dependency, nil
+ @reqs.add req
+
+ @set.prefetch @reqs
+
+ found = @set.find_all dependency
+
+ assert_equal [@set.specs['a']], found
+ end
+
+ def test_prefetch
+ name, _, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', false
+
+ dependency = dep name
+ req = Gem::Resolver::ActivationRequest.new dependency, nil
+ @reqs.add req
+
+ @set.prefetch @reqs
+
+ refute_empty @set.specs
+ end
+
+ def test_prefetch_filter
+ name, _, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', false
+
+ dependency = dep 'b'
+ req = Gem::Resolver::ActivationRequest.new dependency, nil
+ @reqs.add req
+
+ @set.prefetch @reqs
+
+ assert_empty @set.specs
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_resolver_git_specification.rb b/test/rubygems/test_gem_resolver_git_specification.rb
new file mode 100644
index 0000000000..f961a7709a
--- /dev/null
+++ b/test/rubygems/test_gem_resolver_git_specification.rb
@@ -0,0 +1,36 @@
+require 'rubygems/test_case'
+
+class TestGemResolverGitSpecification < Gem::TestCase
+
+ def setup
+ super
+
+ @set = Gem::Resolver::GitSet.new
+ @spec = Gem::Specification.new 'a', 1
+ end
+
+ def test_equals2
+ g_spec_a = Gem::Resolver::GitSpecification.new @set, @spec
+
+ assert_equal g_spec_a, g_spec_a
+
+ spec_b = Gem::Specification.new 'b', 1
+ g_spec_b = Gem::Resolver::GitSpecification.new @set, spec_b
+
+ refute_equal g_spec_a, g_spec_b
+
+ g_set = Gem::Resolver::GitSet.new
+ g_spec_s = Gem::Resolver::GitSpecification.new g_set, @spec
+
+ refute_equal g_spec_a, g_spec_s
+
+ i_set = Gem::Resolver::IndexSet.new
+ source = Gem::Source.new @gem_repo
+ i_spec = Gem::Resolver::IndexSpecification.new(
+ i_set, 'a', v(1), source, Gem::Platform::RUBY)
+
+ refute_equal g_spec_a, i_spec
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_dependency_resolver_index_set.rb b/test/rubygems/test_gem_resolver_index_set.rb
index 83b7cce501..137e9b5cac 100644
--- a/test/rubygems/test_gem_dependency_resolver_index_set.rb
+++ b/test/rubygems/test_gem_resolver_index_set.rb
@@ -1,12 +1,11 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverIndexSet < Gem::TestCase
+class TestGemResolverIndexSet < Gem::TestCase
def setup
super
- @DR = Gem::DependencyResolver
+ @DR = Gem::Resolver
end
def test_initialize
diff --git a/test/rubygems/test_gem_dependency_resolver_index_specification.rb b/test/rubygems/test_gem_resolver_index_specification.rb
index 751ed34db3..ef474ab2d4 100644
--- a/test/rubygems/test_gem_dependency_resolver_index_specification.rb
+++ b/test/rubygems/test_gem_resolver_index_specification.rb
@@ -1,15 +1,14 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
require 'rubygems/available_set'
-class TestGemDependencyResolverIndexSpecification < Gem::TestCase
+class TestGemResolverIndexSpecification < Gem::TestCase
def test_initialize
- set = Gem::DependencyResolver::IndexSet.new
+ set = Gem::Resolver::IndexSet.new
source = Gem::Source.new @gem_repo
version = Gem::Version.new '3.0.3'
- spec = Gem::DependencyResolver::IndexSpecification.new(
+ spec = Gem::Resolver::IndexSpecification.new(
set, 'rails', version, source, Gem::Platform::RUBY)
assert_equal 'rails', spec.name
@@ -20,11 +19,11 @@ class TestGemDependencyResolverIndexSpecification < Gem::TestCase
end
def test_initialize_platform
- set = Gem::DependencyResolver::IndexSet.new
+ set = Gem::Resolver::IndexSet.new
source = Gem::Source::Local.new
version = Gem::Version.new '3.0.3'
- spec = Gem::DependencyResolver::IndexSpecification.new(
+ spec = Gem::Resolver::IndexSpecification.new(
set, 'rails', version, source, Gem::Platform.local)
assert_equal Gem::Platform.local.to_s, spec.platform
@@ -39,8 +38,8 @@ class TestGemDependencyResolverIndexSpecification < Gem::TestCase
source = Gem::Source.new @gem_repo
version = v 2
- set = Gem::DependencyResolver::IndexSet.new
- i_spec = Gem::DependencyResolver::IndexSpecification.new \
+ set = Gem::Resolver::IndexSet.new
+ i_spec = Gem::Resolver::IndexSpecification.new \
set, 'a', version, source, Gem::Platform.local
spec = i_spec.spec
@@ -53,10 +52,10 @@ class TestGemDependencyResolverIndexSpecification < Gem::TestCase
Gem::Package.build a_2_p
source = Gem::Source::Local.new
- set = Gem::DependencyResolver::InstallerSet.new :local
+ set = Gem::Resolver::InstallerSet.new :local
set.always_install << a_2_p
- i_spec = Gem::DependencyResolver::IndexSpecification.new \
+ i_spec = Gem::Resolver::IndexSpecification.new \
set, 'a', v(2), source, Gem::Platform.local
spec = i_spec.spec
diff --git a/test/rubygems/test_gem_dependency_resolver_installed_specification.rb b/test/rubygems/test_gem_resolver_installed_specification.rb
index e1f4262e4b..f9dda29a6c 100644
--- a/test/rubygems/test_gem_dependency_resolver_installed_specification.rb
+++ b/test/rubygems/test_gem_resolver_installed_specification.rb
@@ -1,14 +1,13 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverInstalledSpecification < Gem::TestCase
+class TestGemResolverInstalledSpecification < Gem::TestCase
def test_initialize
- set = Gem::DependencyResolver::CurrentSet.new
+ set = Gem::Resolver::CurrentSet.new
source_spec = util_spec 'a'
- spec = Gem::DependencyResolver::InstalledSpecification.new set, source_spec
+ spec = Gem::Resolver::InstalledSpecification.new set, source_spec
assert_equal 'a', spec.name
assert_equal Gem::Version.new(2), spec.version
diff --git a/test/rubygems/test_gem_dependency_resolver_installer_set.rb b/test/rubygems/test_gem_resolver_installer_set.rb
index 6341c6bc73..af4db646a9 100644
--- a/test/rubygems/test_gem_dependency_resolver_installer_set.rb
+++ b/test/rubygems/test_gem_resolver_installer_set.rb
@@ -1,7 +1,6 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverInstallerSet < Gem::TestCase
+class TestGemResolverInstallerSet < Gem::TestCase
def test_load_spec
specs = spec_fetcher do |fetcher|
@@ -12,7 +11,7 @@ class TestGemDependencyResolverInstallerSet < Gem::TestCase
source = Gem::Source.new @gem_repo
version = v 2
- set = Gem::DependencyResolver::InstallerSet.new :remote
+ set = Gem::Resolver::InstallerSet.new :remote
spec = set.load_spec 'a', version, Gem::Platform.local, source
diff --git a/test/rubygems/test_gem_dependency_resolver_lock_set.rb b/test/rubygems/test_gem_resolver_lock_set.rb
index 6142f2b8d0..71b28efd4f 100644
--- a/test/rubygems/test_gem_dependency_resolver_lock_set.rb
+++ b/test/rubygems/test_gem_resolver_lock_set.rb
@@ -1,14 +1,13 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverLockSet < Gem::TestCase
+class TestGemResolverLockSet < Gem::TestCase
def setup
super
@source = Gem::Source.new @gem_repo
- @set = Gem::DependencyResolver::LockSet.new @source
+ @set = Gem::Resolver::LockSet.new @source
end
def test_add
diff --git a/test/rubygems/test_gem_resolver_requirement_list.rb b/test/rubygems/test_gem_resolver_requirement_list.rb
new file mode 100644
index 0000000000..3d09ce5f92
--- /dev/null
+++ b/test/rubygems/test_gem_resolver_requirement_list.rb
@@ -0,0 +1,19 @@
+require 'rubygems/test_case'
+
+class TestGemResolverRequirementList < Gem::TestCase
+
+ def setup
+ super
+
+ @list = Gem::Resolver::RequirementList.new
+ end
+
+ def test_each
+ @list.add 1
+ @list.add 2
+
+ assert_equal [1, 2], @list.each.to_a
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_dependency_resolver_vendor_set.rb b/test/rubygems/test_gem_resolver_vendor_set.rb
index 227cf369c8..58519fbf14 100644
--- a/test/rubygems/test_gem_dependency_resolver_vendor_set.rb
+++ b/test/rubygems/test_gem_resolver_vendor_set.rb
@@ -1,12 +1,11 @@
require 'rubygems/test_case'
-require 'rubygems/dependency_resolver'
-class TestGemDependencyResolverVendorSet < Gem::TestCase
+class TestGemResolverVendorSet < Gem::TestCase
def setup
super
- @set = Gem::DependencyResolver::VendorSet.new
+ @set = Gem::Resolver::VendorSet.new
end
def test_add_vendor_gem
@@ -39,7 +38,7 @@ class TestGemDependencyResolverVendorSet < Gem::TestCase
dependency = dep 'a', '~> 1'
- req = Gem::DependencyResolver::DependencyRequest.new dependency, nil
+ req = Gem::Resolver::DependencyRequest.new dependency, nil
found = @set.find_all req
@@ -48,7 +47,7 @@ class TestGemDependencyResolverVendorSet < Gem::TestCase
source = Gem::Source::Vendor.new directory
expected = [
- Gem::DependencyResolver::VendorSpecification.new(@set, spec, source)
+ Gem::Resolver::VendorSpecification.new(@set, spec, source)
]
assert_equal expected, found
diff --git a/test/rubygems/test_gem_resolver_vendor_specification.rb b/test/rubygems/test_gem_resolver_vendor_specification.rb
new file mode 100644
index 0000000000..d7aca569e2
--- /dev/null
+++ b/test/rubygems/test_gem_resolver_vendor_specification.rb
@@ -0,0 +1,71 @@
+require 'rubygems/test_case'
+
+class TestGemResolverVendorSpecification < Gem::TestCase
+
+ def setup
+ super
+
+ @set = Gem::Resolver::VendorSet.new
+ @spec = Gem::Specification.new 'a', 1
+ end
+
+ def test_equals2
+ v_spec_a = Gem::Resolver::VendorSpecification.new @set, @spec
+
+ assert_equal v_spec_a, v_spec_a
+
+ spec_b = Gem::Specification.new 'b', 1
+ v_spec_b = Gem::Resolver::VendorSpecification.new @set, spec_b
+
+ refute_equal v_spec_a, v_spec_b
+
+ v_set = Gem::Resolver::VendorSet.new
+ v_spec_s = Gem::Resolver::VendorSpecification.new v_set, @spec
+
+ refute_equal v_spec_a, v_spec_s
+
+ i_set = Gem::Resolver::IndexSet.new
+ source = Gem::Source.new @gem_repo
+ i_spec = Gem::Resolver::IndexSpecification.new(
+ i_set, 'a', v(1), source, Gem::Platform::RUBY)
+
+ refute_equal v_spec_a, i_spec
+ end
+
+ def test_dependencies
+ @spec.add_dependency 'b'
+ @spec.add_dependency 'c'
+
+ v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
+
+ assert_equal [dep('b'), dep('c')], v_spec.dependencies
+ end
+
+ def test_full_name
+ v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
+
+ assert_equal 'a-1', v_spec.full_name
+ end
+
+ def test_name
+ v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
+
+ assert_equal 'a', v_spec.name
+ end
+
+ def test_platform
+ v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
+
+ assert_equal Gem::Platform::RUBY, v_spec.platform
+ end
+
+ def test_version
+ spec = Gem::Specification.new 'a', 1
+
+ v_spec = Gem::Resolver::VendorSpecification.new @set, spec
+
+ assert_equal v(1), v_spec.version
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_source.rb b/test/rubygems/test_gem_source.rb
index 3ed40a625a..d207bcac7f 100644
--- a/test/rubygems/test_gem_source.rb
+++ b/test/rubygems/test_gem_source.rb
@@ -44,13 +44,13 @@ class TestGemSource < Gem::TestCase
set = @source.dependency_resolver_set
- assert_kind_of Gem::DependencyResolver::APISet, set
+ assert_kind_of Gem::Resolver::APISet, set
end
def test_dependency_resolver_set_marshal_api
set = @source.dependency_resolver_set
- assert_kind_of Gem::DependencyResolver::IndexSet, set
+ assert_kind_of Gem::Resolver::IndexSet, set
end
def test_fetch_spec
diff --git a/test/rubygems/test_gem_source_git.rb b/test/rubygems/test_gem_source_git.rb
new file mode 100644
index 0000000000..78c415a9d3
--- /dev/null
+++ b/test/rubygems/test_gem_source_git.rb
@@ -0,0 +1,153 @@
+require 'rubygems/test_case'
+require 'rubygems/source'
+
+class TestGemSourceGit < Gem::TestCase
+
+ def setup
+ super
+
+ @name, @version, @repository, @head = git_gem
+
+ @hash = Digest::SHA1.hexdigest @repository
+
+ @source = Gem::Source::Git.new @name, @repository, 'master', false
+ end
+
+ def test_checkout
+ @source.checkout
+
+ assert_path_exists File.join @source.install_dir, 'a.gemspec'
+ end
+
+ def test_checkout_submodules
+ source = Gem::Source::Git.new @name, @repository, 'master', true
+
+ git_gem 'b'
+
+ Dir.chdir 'git/a' do
+ system @git, 'submodule', '--quiet', 'add', File.expand_path('../b'), 'b'
+ system @git, 'commit', '--quiet', '-m', 'add submodule b'
+ end
+
+ source.checkout
+
+ assert_path_exists File.join source.install_dir, 'a.gemspec'
+ assert_path_exists File.join source.install_dir, 'b/b.gemspec'
+ end
+
+ def test_cache
+ assert @source.cache
+
+ assert_path_exists @source.repo_cache_dir
+
+ Dir.chdir @source.repo_cache_dir do
+ assert_equal @head, Gem::Util.popen(@git, 'rev-parse', 'master').strip
+ end
+ end
+
+ def test_dir_shortref
+ @source.cache
+
+ assert_equal @head[0..11], @source.dir_shortref
+ end
+
+ def test_equals2
+ assert_equal @source, @source
+
+ assert_equal @source, @source.dup
+
+ source =
+ Gem::Source::Git.new @source.name, @source.repository, 'other', false
+
+ refute_equal @source, source
+
+ source =
+ Gem::Source::Git.new @source.name, 'repo/other', @source.reference, false
+
+ refute_equal @source, source
+
+ source =
+ Gem::Source::Git.new 'b', @source.repository, @source.reference, false
+
+ refute_equal @source, source
+
+ source =
+ Gem::Source::Git.new @source.name, @source.repository, @source.reference,
+ true
+
+ refute_equal @source, source
+ end
+
+ def test_load_spec
+ spec = @source.load_spec @name
+
+ assert_equal "#{@name}-#{@version}", spec.full_name
+ end
+
+ def test_install_dir
+ @source.cache
+
+ expected = File.join Gem.dir, 'bundler', 'gems', "a-#{@head[0..11]}"
+
+ assert_equal expected, @source.install_dir
+ end
+
+ def test_repo_cache_dir
+ expected =
+ File.join Gem.dir, 'cache', 'bundler', 'git', "a-#{@hash}"
+
+ assert_equal expected, @source.repo_cache_dir
+ end
+
+ def test_rev_parse
+ @source.cache
+
+ assert_equal @head, @source.rev_parse
+
+ Dir.chdir @repository do
+ system @git, 'checkout', '--quiet', '-b', 'other'
+ end
+
+ master_head = @head
+
+ git_gem 'a', 2
+
+ source = Gem::Source::Git.new @name, @repository, 'other', false
+
+ source.cache
+
+ refute_equal master_head, source.rev_parse
+ end
+
+ def test_spaceship
+ git = Gem::Source::Git.new 'a', 'git/a', 'master', false
+ remote = Gem::Source.new @gem_repo
+ installed = Gem::Source::Installed.new
+
+ assert_equal( 0, git. <=>(git), 'git <=> git')
+
+ assert_equal( 1, git. <=>(remote), 'git <=> remote')
+ assert_equal(-1, remote. <=>(git), 'remote <=> git')
+
+ assert_equal( 1, installed.<=>(git), 'installed <=> git')
+ assert_equal(-1, git. <=>(installed), 'git <=> installed')
+ end
+
+ def test_uri_hash
+ assert_equal @hash, @source.uri_hash
+
+ source =
+ Gem::Source::Git.new 'a', 'http://git@example/repo.git', 'master', false
+
+ assert_equal '291c4caac7feba8bb64c297987028acb3dde6cfe',
+ source.uri_hash
+
+ source =
+ Gem::Source::Git.new 'a', 'HTTP://git@EXAMPLE/repo.git', 'master', false
+
+ assert_equal '291c4caac7feba8bb64c297987028acb3dde6cfe',
+ source.uri_hash
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_source_vendor.rb b/test/rubygems/test_gem_source_vendor.rb
index 17403a1fc8..3f4121e5f6 100644
--- a/test/rubygems/test_gem_source_vendor.rb
+++ b/test/rubygems/test_gem_source_vendor.rb
@@ -9,5 +9,19 @@ class TestGemSourceVendor < Gem::TestCase
assert_equal 'vendor/foo', source.uri
end
+ def test_spaceship
+ vendor = Gem::Source::Vendor.new 'vendor/foo'
+ remote = Gem::Source.new @gem_repo
+ installed = Gem::Source::Installed.new
+
+ assert_equal( 0, vendor. <=>(vendor), 'vendor <=> vendor')
+
+ assert_equal( 1, vendor. <=>(remote), 'vendor <=> remote')
+ assert_equal(-1, remote. <=>(vendor), 'remote <=> vendor')
+
+ assert_equal( 1, vendor. <=>(installed), 'vendor <=> installed')
+ assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
+ end
+
end
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index 75ea4092b7..3924191db9 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -1733,7 +1733,7 @@ dependencies: []
full_gem_path = Pathname(@ext.full_gem_path)
relative_install_dir = ext_install_dir.relative_path_from full_gem_path
- assert_equal ['lib', relative_install_dir.to_s], @ext.require_paths
+ assert_equal [relative_install_dir.to_s, 'lib'], @ext.require_paths
ensure
RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
end
@@ -1744,8 +1744,8 @@ dependencies: []
@ext.require_path = 'lib'
expected = [
- File.join(@gemhome, 'gems', @ext.original_name, 'lib'),
@ext.extension_install_dir,
+ File.join(@gemhome, 'gems', @ext.original_name, 'lib'),
]
assert_equal expected, @ext.full_require_paths
diff --git a/test/rubygems/test_gem_stub_specification.rb b/test/rubygems/test_gem_stub_specification.rb
index bb04fb4dcc..50621e28ae 100644
--- a/test/rubygems/test_gem_stub_specification.rb
+++ b/test/rubygems/test_gem_stub_specification.rb
@@ -31,7 +31,7 @@ class TestStubSpecification < Gem::TestCase
assert_equal 'stub_e', stub.name
assert_equal v(2), stub.version
assert_equal Gem::Platform::RUBY, stub.platform
- assert_equal ['lib', relative_install_dir], stub.require_paths
+ assert_equal [relative_install_dir, 'lib'], stub.require_paths
assert_equal %w[ext/stub_e/extconf.rb], stub.extensions
end
@@ -78,8 +78,8 @@ class TestStubSpecification < Gem::TestCase
stub = stub_with_extension
expected = [
- File.join(stub.full_gem_path, 'lib'),
stub.extension_install_dir,
+ File.join(stub.full_gem_path, 'lib'),
]
assert_equal expected, stub.full_require_paths
diff --git a/test/rubygems/test_gem_util.rb b/test/rubygems/test_gem_util.rb
new file mode 100644
index 0000000000..bf67b14d38
--- /dev/null
+++ b/test/rubygems/test_gem_util.rb
@@ -0,0 +1,11 @@
+require 'rubygems/test_case'
+require 'rubygems/util'
+
+class TestGemUtil < Gem::TestCase
+
+ def test_class_popen
+ assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-e', 'p 0')
+ end
+
+end
+