diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-19 00:34:13 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-19 00:34:13 +0000 |
commit | a7fa4d5d9aab150ad4b0c3f3217fe444df69f527 (patch) | |
tree | 88ab96d22f7228b556337aa7c34042d4fd279394 /test/rubygems | |
parent | e7ec3dad907f2c77f17faddb40a98b2ef4523222 (diff) | |
download | ruby-a7fa4d5d9aab150ad4b0c3f3217fe444df69f527.tar.gz |
* 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')
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 + |