aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems
diff options
context:
space:
mode:
Diffstat (limited to 'test/rubygems')
-rw-r--r--test/rubygems/test_gem.rb17
-rw-r--r--test/rubygems/test_gem_dependency_resolver.rb21
-rw-r--r--test/rubygems/test_gem_dependency_resolver_api_specification.rb33
-rw-r--r--test/rubygems/test_gem_dependency_resolver_index_set.rb53
-rw-r--r--test/rubygems/test_gem_dependency_resolver_index_specification.rb46
-rw-r--r--test/rubygems/test_gem_dependency_resolver_installed_specification.rb19
-rw-r--r--test/rubygems/test_gem_dependency_resolver_installer_set.rb28
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb25
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb15
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