diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-10 00:52:14 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-10 00:52:14 +0000 |
commit | f06f90323133e2f1440cd5090a622b56994c4e65 (patch) | |
tree | 9eb52cdb3b8e0a8bab0c7e10b5c8cdce14762898 /test/rubygems | |
parent | 888e5cbbe7398aa814f5a0208a0fd30cfe337f3b (diff) | |
download | ruby-f06f90323133e2f1440cd5090a622b56994c4e65.tar.gz |
* lib/rubygems: Update to RubyGems 2.1.0. Fixes CVE-2013-4287.
See http://rubygems.rubyforge.org/rubygems-update/CVE-2013-4287_txt.html
for CVE information.
See http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.1.0+%2F+2013-09-09
for release notes.
* test/rubygems: Tests for the above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems')
-rw-r--r-- | test/rubygems/test_gem.rb | 17 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver.rb | 21 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver_api_specification.rb | 33 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver_index_set.rb | 53 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver_index_specification.rb | 46 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver_installed_specification.rb | 19 | ||||
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver_installer_set.rb | 28 | ||||
-rw-r--r-- | test/rubygems/test_gem_gemcutter_utilities.rb | 25 | ||||
-rw-r--r-- | test/rubygems/test_gem_spec_fetcher.rb | 15 |
9 files changed, 236 insertions, 21 deletions
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 38a63c3b2c..45db153c22 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -1183,23 +1183,28 @@ class TestGem < Gem::TestCase def test_default_gems_use_full_paths begin - engine = RUBY_ENGINE - Object.send :remove_const, :RUBY_ENGINE + if defined?(RUBY_ENGINE) then + engine = RUBY_ENGINE + Object.send :remove_const, :RUBY_ENGINE + end Object.const_set :RUBY_ENGINE, 'ruby' + refute Gem.default_gems_use_full_paths? ensure Object.send :remove_const, :RUBY_ENGINE - Object.const_set :RUBY_ENGINE, engine + Object.const_set :RUBY_ENGINE, engine if engine end begin - engine = RUBY_ENGINE - Object.send :remove_const, :RUBY_ENGINE + if defined?(RUBY_ENGINE) then + engine = RUBY_ENGINE + Object.send :remove_const, :RUBY_ENGINE + end Object.const_set :RUBY_ENGINE, 'jruby' assert Gem.default_gems_use_full_paths? ensure Object.send :remove_const, :RUBY_ENGINE - Object.const_set :RUBY_ENGINE, engine + Object.const_set :RUBY_ENGINE, engine if engine end end diff --git a/test/rubygems/test_gem_dependency_resolver.rb b/test/rubygems/test_gem_dependency_resolver.rb index 3f65c23aa9..38f3d868ea 100644 --- a/test/rubygems/test_gem_dependency_resolver.rb +++ b/test/rubygems/test_gem_dependency_resolver.rb @@ -66,6 +66,27 @@ class TestGemDependencyResolver < Gem::TestCase assert_set [a2], res.resolve end + def test_picks_best_platform + is = Gem::DependencyResolver::IndexSpecification + a2_p = quick_spec 'a' do |s| s.platform = Gem::Platform.local end + version = Gem::Version.new 2 + source = Gem::Source.new @gem_repo + + s = set + + a2 = is.new s, 'a', version, source, Gem::Platform::RUBY + a2_p = is.new s, 'a', version, source, Gem::Platform.local.to_s + + s.add a2_p + s.add a2 + + ad = make_dep "a" + + res = Gem::DependencyResolver.new([ad], s) + + assert_set [a2_p], res.resolve + end + def test_only_returns_spec_once a1 = util_spec "a", "1", "c" => "= 1" b1 = util_spec "b", "1", "c" => "= 1" diff --git a/test/rubygems/test_gem_dependency_resolver_api_specification.rb b/test/rubygems/test_gem_dependency_resolver_api_specification.rb new file mode 100644 index 0000000000..cdbecec822 --- /dev/null +++ b/test/rubygems/test_gem_dependency_resolver_api_specification.rb @@ -0,0 +1,33 @@ +require 'rubygems/test_case' +require 'rubygems/dependency_resolver' + +class TestGemDependencyResolverAPISpecification < Gem::TestCase + + def test_initialize + set = Gem::DependencyResolver::APISet.new + data = { + :name => 'rails', + :number => '3.0.3', + :platform => 'ruby', + :dependencies => [ + ['bundler', '~> 1.0'], + ['railties', '= 3.0.3'], + ], + } + + spec = Gem::DependencyResolver::APISpecification.new set, data + + assert_equal 'rails', spec.name + assert_equal Gem::Version.new('3.0.3'), spec.version + assert_equal Gem::Platform::RUBY, spec.platform + + expected = [ + Gem::Dependency.new('bundler', '~> 1.0'), + Gem::Dependency.new('railties', '= 3.0.3'), + ] + + assert_equal expected, spec.dependencies + end + +end + diff --git a/test/rubygems/test_gem_dependency_resolver_index_set.rb b/test/rubygems/test_gem_dependency_resolver_index_set.rb new file mode 100644 index 0000000000..82ea486792 --- /dev/null +++ b/test/rubygems/test_gem_dependency_resolver_index_set.rb @@ -0,0 +1,53 @@ +require 'rubygems/test_case' +require 'rubygems/dependency_resolver' + +class TestGemDependencyResolverIndexSet < Gem::TestCase + + def test_load_spec + @fetcher = Gem::FakeFetcher.new + Gem::RemoteFetcher.fetcher = @fetcher + + a_2 = quick_spec 'a', 2 + a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end + + Gem::Specification.add_specs a_2, a_2_p + + util_setup_spec_fetcher a_2, a_2_p + + source = Gem::Source.new @gem_repo + version = v 2 + + set = Gem::DependencyResolver::IndexSet.new + + spec = set.load_spec 'a', version, Gem::Platform.local, source + + assert_equal a_2_p.full_name, spec.full_name + end + + def test_load_spec_cached + @fetcher = Gem::FakeFetcher.new + Gem::RemoteFetcher.fetcher = @fetcher + + a_2 = quick_spec 'a', 2 + a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end + + Gem::Specification.add_specs a_2, a_2_p + + util_setup_spec_fetcher a_2, a_2_p + + source = Gem::Source.new @gem_repo + version = v 2 + + set = Gem::DependencyResolver::IndexSet.new + + first = set.load_spec 'a', version, Gem::Platform.local, source + + util_setup_spec_fetcher # clear + + second = set.load_spec 'a', version, Gem::Platform.local, source + + assert_same first, second + end + +end + diff --git a/test/rubygems/test_gem_dependency_resolver_index_specification.rb b/test/rubygems/test_gem_dependency_resolver_index_specification.rb new file mode 100644 index 0000000000..20a7e7d85b --- /dev/null +++ b/test/rubygems/test_gem_dependency_resolver_index_specification.rb @@ -0,0 +1,46 @@ +require 'rubygems/test_case' +require 'rubygems/dependency_resolver' + +class TestGemDependencyResolverIndexSpecification < Gem::TestCase + + def test_initialize + set = Gem::DependencyResolver::IndexSet.new + source = Gem::Source.new @gem_repo + version = Gem::Version.new '3.0.3' + + spec = Gem::DependencyResolver::IndexSpecification.new( + set, 'rails', version, source, Gem::Platform::RUBY) + + assert_equal 'rails', spec.name + assert_equal version, spec.version + assert_equal Gem::Platform::RUBY, spec.platform + + assert_equal source, spec.source + end + + def test_spec + @fetcher = Gem::FakeFetcher.new + Gem::RemoteFetcher.fetcher = @fetcher + + a_2 = quick_spec 'a', 2 + a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end + + Gem::Specification.add_specs a_2, a_2_p + + util_setup_spec_fetcher a_2, a_2_p + + source = Gem::Source.new @gem_repo + version = v 2 + + set = Gem::DependencyResolver::IndexSet.new + i_spec = Gem::DependencyResolver::IndexSpecification.new \ + set, 'a', version, source, Gem::Platform.local + + spec = i_spec.spec + + assert_equal a_2_p.full_name, spec.full_name + end + + +end + diff --git a/test/rubygems/test_gem_dependency_resolver_installed_specification.rb b/test/rubygems/test_gem_dependency_resolver_installed_specification.rb new file mode 100644 index 0000000000..6586ca4654 --- /dev/null +++ b/test/rubygems/test_gem_dependency_resolver_installed_specification.rb @@ -0,0 +1,19 @@ +require 'rubygems/test_case' +require 'rubygems/dependency_resolver' + +class TestGemDependencyResolverInstalledSpecification < Gem::TestCase + + def test_initialize + set = Gem::DependencyResolver::CurrentSet.new + + source_spec = quick_spec 'a' + + spec = Gem::DependencyResolver::InstalledSpecification.new set, source_spec + + assert_equal 'a', spec.name + assert_equal Gem::Version.new(2), spec.version + assert_equal Gem::Platform::RUBY, spec.platform + end + +end + diff --git a/test/rubygems/test_gem_dependency_resolver_installer_set.rb b/test/rubygems/test_gem_dependency_resolver_installer_set.rb new file mode 100644 index 0000000000..b6b50a12fe --- /dev/null +++ b/test/rubygems/test_gem_dependency_resolver_installer_set.rb @@ -0,0 +1,28 @@ +require 'rubygems/test_case' +require 'rubygems/dependency_resolver' + +class TestGemDependencyResolverInstallerSet < Gem::TestCase + + def test_load_spec + @fetcher = Gem::FakeFetcher.new + Gem::RemoteFetcher.fetcher = @fetcher + + a_2 = quick_spec 'a', 2 + a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end + + Gem::Specification.add_specs a_2, a_2_p + + util_setup_spec_fetcher a_2, a_2_p + + source = Gem::Source.new @gem_repo + version = v 2 + + set = Gem::DependencyResolver::InstallerSet.new :remote + + spec = set.load_spec 'a', version, Gem::Platform.local, source + + assert_equal a_2_p.full_name, spec.full_name + end + +end + diff --git a/test/rubygems/test_gem_gemcutter_utilities.rb b/test/rubygems/test_gem_gemcutter_utilities.rb index 18b4518b06..d70ac35beb 100644 --- a/test/rubygems/test_gem_gemcutter_utilities.rb +++ b/test/rubygems/test_gem_gemcutter_utilities.rb @@ -101,7 +101,7 @@ class TestGemGemcutterUtilities < Gem::TestCase def test_sign_in_with_host api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903' - util_sign_in [api_key, 200, 'OK'], 'http://example.com', :param + util_sign_in [api_key, 200, 'OK'], 'http://example.com', ['http://example.com'] assert_match "Enter your http://example.com credentials.", @sign_in_ui.output @@ -112,6 +112,20 @@ class TestGemGemcutterUtilities < Gem::TestCase assert_equal api_key, credentials[:rubygems_api_key] end + def test_sign_in_with_host_nil + api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903' + + util_sign_in [api_key, 200, 'OK'], nil, [nil] + + assert_match "Enter your RubyGems.org credentials.", + @sign_in_ui.output + assert @fetcher.last_request["authorization"] + assert_match %r{Signed in.}, @sign_in_ui.output + + credentials = YAML.load_file Gem.configuration.credentials_path + assert_equal api_key, credentials[:rubygems_api_key] + end + def test_sign_in_with_host_ENV api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903' util_sign_in [api_key, 200, 'OK'], 'http://example.com' @@ -163,14 +177,14 @@ class TestGemGemcutterUtilities < Gem::TestCase assert_match %r{Access Denied.}, @sign_in_ui.output end - def util_sign_in response, host = nil, style = :ENV + def util_sign_in response, host = nil, args = [] skip 'Always uses $stdin on windows' if Gem.win_platform? email = 'you@example.com' password = 'secret' if host - ENV['RUBYGEMS_HOST'] = host if style == :ENV + ENV['RUBYGEMS_HOST'] = host else host = Gem.host end @@ -182,8 +196,8 @@ class TestGemGemcutterUtilities < Gem::TestCase @sign_in_ui = Gem::MockGemUi.new "#{email}\n#{password}\n" use_ui @sign_in_ui do - if style == :param then - @cmd.sign_in host + if args.length > 0 then + @cmd.sign_in(*args) else @cmd.sign_in end @@ -209,4 +223,3 @@ class TestGemGemcutterUtilities < Gem::TestCase end end - diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb index a821057705..8be10a30b9 100644 --- a/test/rubygems/test_gem_spec_fetcher.rb +++ b/test/rubygems/test_gem_spec_fetcher.rb @@ -168,7 +168,7 @@ class TestGemSpecFetcher < Gem::TestCase specs, _ = @sf.available_specs(:latest) assert_equal [@source], specs.keys - assert_equal @latest_specs, specs[@source].sort + assert_equal @latest_specs, specs[@source] end def test_available_specs_released @@ -176,7 +176,7 @@ class TestGemSpecFetcher < Gem::TestCase assert_equal [@source], specs.keys - assert_equal @released, specs[@source].sort + assert_equal @released, specs[@source] end def test_available_specs_complete @@ -184,9 +184,9 @@ class TestGemSpecFetcher < Gem::TestCase assert_equal [@source], specs.keys - comp = @prerelease_specs + @released + expected = (@prerelease_specs + @released).sort - assert_equal comp.sort, specs[@source].sort + assert_equal expected, specs[@source] end def test_available_specs_complete_handles_no_prerelease @@ -197,12 +197,9 @@ class TestGemSpecFetcher < Gem::TestCase assert_equal [@source], specs.keys - comp = @released - - assert_equal comp.sort, specs[@source].sort + assert_equal @released, specs[@source] end - def test_available_specs_cache specs, _ = @sf.available_specs(:latest) @@ -230,7 +227,7 @@ class TestGemSpecFetcher < Gem::TestCase def test_available_specs_prerelease specs, _ = @sf.available_specs(:prerelease) - assert_equal @prerelease_specs, specs[@source].sort + assert_equal @prerelease_specs, specs[@source] end def test_available_specs_with_bad_source |