diff options
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 + |