summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-04 00:48:31 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-04 00:48:31 +0000
commitea2a00d785576a7dc45c0f6e965de605929e889d (patch)
tree567e52888b17aacb404c59eb64519d927fb8894f /test
parentbd950a75b512a7d6243d1f0bb5e944a06a2e1f94 (diff)
* lib/rubygems: Update to RubyGems 2.2.2 prerelease to check fixes to
CI. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/rubygems/test_gem.rb58
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb68
-rw-r--r--test/rubygems/test_gem_installer.rb8
-rw-r--r--test/rubygems/test_gem_package_tar_header.rb14
-rw-r--r--test/rubygems/test_gem_platform.rb6
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb6
-rw-r--r--test/rubygems/test_gem_request.rb69
-rw-r--r--test/rubygems/test_gem_request_set.rb21
-rw-r--r--test/rubygems/test_gem_resolver.rb8
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb41
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb50
-rw-r--r--test/rubygems/test_gem_resolver_composed_set.rb18
-rw-r--r--test/rubygems/test_gem_resolver_git_set.rb15
-rw-r--r--test/rubygems/test_gem_resolver_index_set.rb35
-rw-r--r--test/rubygems/test_gem_resolver_installer_set.rb70
-rw-r--r--test/rubygems/test_gem_source_git.rb43
-rw-r--r--test/rubygems/test_gem_specification.rb19
17 files changed, 475 insertions, 74 deletions
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index 513f2d4e58..e33742049c 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -199,30 +199,21 @@ class TestGem < Gem::TestCase
end
def test_self_default_exec_format
- orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
- RbConfig::CONFIG['ruby_install_name'] = 'ruby'
-
- assert_equal '%s', Gem.default_exec_format
- ensure
- RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
+ ruby_install_name 'ruby' do
+ assert_equal '%s', Gem.default_exec_format
+ end
end
def test_self_default_exec_format_18
- orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
- RbConfig::CONFIG['ruby_install_name'] = 'ruby18'
-
- assert_equal '%s18', Gem.default_exec_format
- ensure
- RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
+ ruby_install_name 'ruby18' do
+ assert_equal '%s18', Gem.default_exec_format
+ end
end
def test_self_default_exec_format_jruby
- orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
- RbConfig::CONFIG['ruby_install_name'] = 'jruby'
-
- assert_equal 'j%s', Gem.default_exec_format
- ensure
- RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
+ ruby_install_name 'jruby' do
+ assert_equal 'j%s', Gem.default_exec_format
+ end
end
def test_self_default_sources
@@ -340,21 +331,15 @@ class TestGem < Gem::TestCase
end
def test_self_extension_dir_shared
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
- RbConfig::CONFIG['ENABLE_SHARED'], 'yes'
-
- assert_equal Gem.ruby_api_version, Gem.extension_api_version
- ensure
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
+ enable_shared 'yes' do
+ assert_equal Gem.ruby_api_version, Gem.extension_api_version
+ end
end
def test_self_extension_dir_static
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
- RbConfig::CONFIG['ENABLE_SHARED'], 'no'
-
- assert_equal "#{Gem.ruby_api_version}-static", Gem.extension_api_version
- ensure
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
+ enable_shared 'no' do
+ assert_equal "#{Gem.ruby_api_version}-static", Gem.extension_api_version
+ end
end
def test_self_find_files
@@ -1339,6 +1324,19 @@ class TestGem < Gem::TestCase
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
end
+ def ruby_install_name name
+ orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
+ RbConfig::CONFIG['ruby_install_name'] = name
+
+ yield
+ ensure
+ if orig_RUBY_INSTALL_NAME then
+ RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
+ else
+ RbConfig::CONFIG.delete 'ruby_install_name'
+ end
+ end
+
def with_plugin(path)
test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
@@project_dir)
diff --git a/test/rubygems/test_gem_ext_ext_conf_builder.rb b/test/rubygems/test_gem_ext_ext_conf_builder.rb
index aa9008c793..367c933a4c 100644
--- a/test/rubygems/test_gem_ext_ext_conf_builder.rb
+++ b/test/rubygems/test_gem_ext_ext_conf_builder.rb
@@ -42,47 +42,46 @@ class TestGemExtExtConfBuilder < Gem::TestCase
end
def test_class_build_rbconfig_make_prog
- configure_args = RbConfig::CONFIG['configure_args']
+ configure_args do
- File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
- extconf.puts "require 'mkmf'\ncreate_makefile 'foo'"
- end
+ File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
+ extconf.puts "require 'mkmf'\ncreate_makefile 'foo'"
+ end
- output = []
+ output = []
- Dir.chdir @ext do
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
- end
+ Dir.chdir @ext do
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
+ end
- assert_equal "creating Makefile\n", output[1]
- assert_contains_make_command 'clean', output[2]
- assert_contains_make_command '', output[4]
- assert_contains_make_command 'install', output[6]
- ensure
- RbConfig::CONFIG['configure_args'] = configure_args
+ assert_equal "creating Makefile\n", output[1]
+ assert_contains_make_command 'clean', output[2]
+ assert_contains_make_command '', output[4]
+ assert_contains_make_command 'install', output[6]
+ end
end
def test_class_build_env_make
- configure_args, env_make = RbConfig::CONFIG['configure_args'], ENV.delete('make')
- RbConfig::CONFIG['configure_args'] = ''
+ env_make = ENV.delete 'make'
ENV['make'] = 'anothermake'
- File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
- extconf.puts "require 'mkmf'\ncreate_makefile 'foo'"
- end
+ configure_args '' do
+ File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
+ extconf.puts "require 'mkmf'\ncreate_makefile 'foo'"
+ end
- output = []
+ output = []
- assert_raises Gem::InstallError do
- Dir.chdir @ext do
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
+ assert_raises Gem::InstallError do
+ Dir.chdir @ext do
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
+ end
end
- end
- assert_equal "creating Makefile\n", output[1]
- assert_contains_make_command 'clean', output[2]
+ assert_equal "creating Makefile\n", output[1]
+ assert_contains_make_command 'clean', output[2]
+ end
ensure
- RbConfig::CONFIG['configure_args'] = configure_args
ENV['make'] = env_make
end
@@ -108,6 +107,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
assert_equal 'extconf failed, exit code 1', error.message
assert_equal("#{Gem.ruby} extconf.rb", output[0])
+ assert_path_exists File.join @dest_path, 'mkmf.log'
end
def test_class_build_unconventional
@@ -188,5 +188,19 @@ end
assert_equal 'Makefile not found', error.message
end
+ def configure_args args = nil
+ configure_args = RbConfig::CONFIG['configure_args']
+ RbConfig::CONFIG['configure_args'] = args if args
+
+ yield
+
+ ensure
+ if configure_args then
+ RbConfig::CONFIG['configure_args'] = configure_args
+ else
+ RbConfig::CONFIG.delete 'configure_args'
+ end
+ end
+
end
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 54ac853135..eff62ab28b 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -41,7 +41,7 @@ version = \">= 0\"
if ARGV.first
str = ARGV.first
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
- if str =~ /\\A_(.*)_\\z/
+ if str =~ /\\A_(.*)_\\z/ and Gem::Version.correct?($1) then
version = $1
ARGV.shift
end
@@ -102,7 +102,11 @@ load Gem.bin_path('a', 'executable', version)
ensure
Object.const_set :RUBY_FRAMEWORK_VERSION, orig_RUBY_FRAMEWORK_VERSION if
orig_RUBY_FRAMEWORK_VERSION
- RbConfig::CONFIG['bindir'] = orig_bindir
+ if orig_bindir then
+ RbConfig::CONFIG['bindir'] = orig_bindir
+ else
+ RbConfig::CONFIG.delete 'bindir'
+ end
end
def test_check_executable_overwrite_format_executable
diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb
index 5d855435ec..8f1f0c4561 100644
--- a/test/rubygems/test_gem_package_tar_header.rb
+++ b/test/rubygems/test_gem_package_tar_header.rb
@@ -72,6 +72,20 @@ class TestGemPackageTarHeader < Gem::Package::TarTestCase
end
end
+ def test_initialize_typeflag
+ header = {
+ :mode => '',
+ :name => '',
+ :prefix => '',
+ :size => '',
+ :typeflag => '',
+ }
+
+ tar_header = Gem::Package::TarHeader.new header
+
+ assert_equal '0', tar_header.typeflag
+ end
+
def test_empty_eh
refute_empty @tar_header
diff --git a/test/rubygems/test_gem_platform.rb b/test/rubygems/test_gem_platform.rb
index 5966710dad..17577dc744 100644
--- a/test/rubygems/test_gem_platform.rb
+++ b/test/rubygems/test_gem_platform.rb
@@ -116,7 +116,11 @@ class TestGemPlatform < Gem::TestCase
assert_equal expected, platform.to_a, 'i386-mswin32 VC6'
ensure
- RbConfig::CONFIG['RUBY_SO_NAME'] = orig_RUBY_SO_NAME
+ if orig_RUBY_SO_NAME then
+ RbConfig::CONFIG['RUBY_SO_NAME'] = orig_RUBY_SO_NAME
+ else
+ RbConfig::CONFIG.delete 'RUBY_SO_NAME'
+ end
end
def test_initialize_platform
diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb
index 7e6d9c7693..79f3a58bfb 100644
--- a/test/rubygems/test_gem_remote_fetcher.rb
+++ b/test/rubygems/test_gem_remote_fetcher.rb
@@ -208,15 +208,15 @@ gems:
fetcher.instance_variable_set :@test_data, data
unless blow then
- def fetcher.fetch_path arg
+ def fetcher.fetch_path arg, *rest
@test_arg = arg
@test_data
end
else
- def fetcher.fetch_path arg
+ def fetcher.fetch_path arg, *rest
# OMG I'm such an ass
class << self; remove_method :fetch_path; end
- def self.fetch_path arg
+ def self.fetch_path arg, *rest
@test_arg = arg
@test_data
end
diff --git a/test/rubygems/test_gem_request.rb b/test/rubygems/test_gem_request.rb
index 04ff50786f..bcbbcf1f99 100644
--- a/test/rubygems/test_gem_request.rb
+++ b/test/rubygems/test_gem_request.rb
@@ -1,9 +1,16 @@
require 'rubygems/test_case'
require 'rubygems/request'
require 'ostruct'
+require 'base64'
class TestGemRequest < Gem::TestCase
+ CA_CERT_FILE = cert_path 'ca'
+ CHILD_CERT = load_cert 'child'
+ PUBLIC_CERT = load_cert 'public'
+ PUBLIC_CERT_FILE = cert_path 'public'
+ SSL_CERT = load_cert 'ssl'
+
def setup
@proxies = %w[http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
@old_proxies = @proxies.map {|k| ENV[k] }
@@ -62,6 +69,44 @@ class TestGemRequest < Gem::TestCase
assert_equal URI(@proxy_uri), proxy
end
+ def test_configure_connection_for_https
+ connection = Net::HTTP.new 'localhost', 443
+
+ request = Gem::Request.new URI('https://example'), nil, nil, nil
+
+ def request.add_rubygems_trusted_certs store
+ store.add_cert TestGemRequest::PUBLIC_CERT
+ end
+
+ request.configure_connection_for_https connection
+
+ cert_store = connection.cert_store
+
+ assert cert_store.verify CHILD_CERT
+ end
+
+ def test_configure_connection_for_https_ssl_ca_cert
+ ssl_ca_cert, Gem.configuration.ssl_ca_cert =
+ Gem.configuration.ssl_ca_cert, CA_CERT_FILE
+
+ connection = Net::HTTP.new 'localhost', 443
+
+ request = Gem::Request.new URI('https://example'), nil, nil, nil
+
+ def request.add_rubygems_trusted_certs store
+ store.add_cert TestGemRequest::PUBLIC_CERT
+ end
+
+ request.configure_connection_for_https connection
+
+ cert_store = connection.cert_store
+
+ assert cert_store.verify CHILD_CERT
+ assert cert_store.verify SSL_CERT
+ ensure
+ Gem.configuration.ssl_ca_cert = ssl_ca_cert
+ end
+
def test_get_proxy_from_env_fallback
ENV['http_proxy'] = @proxy_uri
@@ -124,6 +169,30 @@ class TestGemRequest < Gem::TestCase
assert_equal :junk, response.body
end
+ def test_fetch_basic_auth
+ uri = URI.parse "https://user:pass@example.rubygems/specs.#{Gem.marshal_version}"
+ @request = Gem::Request.new(uri, Net::HTTP::Get, nil, nil)
+ conn = util_stub_connection_for :body => :junk, :code => 200
+
+ @request.fetch
+
+ auth_header = conn.payload['Authorization']
+
+ assert_equal "Basic #{Base64.encode64('user:pass')}".strip, auth_header
+ end
+
+ def test_fetch_basic_auth_encoded
+ uri = URI.parse "https://user:%7BDEScede%7Dpass@example.rubygems/specs.#{Gem.marshal_version}"
+ @request = Gem::Request.new(uri, Net::HTTP::Get, nil, nil)
+ conn = util_stub_connection_for :body => :junk, :code => 200
+
+ @request.fetch
+
+ auth_header = conn.payload['Authorization']
+
+ assert_equal "Basic #{Base64.encode64('user:{DEScede}pass')}".strip, auth_header
+ end
+
def test_fetch_head
uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}"
@request = Gem::Request.new(uri, Net::HTTP::Get, nil, nil)
diff --git a/test/rubygems/test_gem_request_set.rb b/test/rubygems/test_gem_request_set.rb
index 82757958c8..a5fcdcc2fb 100644
--- a/test/rubygems/test_gem_request_set.rb
+++ b/test/rubygems/test_gem_request_set.rb
@@ -59,6 +59,8 @@ class TestGemRequestSet < Gem::TestCase
assert_includes installed, 'a-2'
assert_path_exists File.join @gemhome, 'gems', 'a-2'
assert_path_exists 'gem.deps.rb.lock'
+
+ assert rs.remote
end
def test_install_from_gemdeps_install_dir
@@ -89,6 +91,25 @@ class TestGemRequestSet < Gem::TestCase
refute_path_exists File.join Gem.dir, 'gems', 'a-2'
end
+ def test_install_from_gemdeps_local
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', 2
+ end
+
+ rs = Gem::RequestSet.new
+
+ open 'gem.deps.rb', 'w' do |io|
+ io.puts 'gem "a"'
+ io.flush
+
+ assert_raises Gem::UnsatisfiableDependencyError do
+ rs.install_from_gemdeps :gemdeps => io.path, :domain => :local
+ end
+ end
+
+ refute rs.remote
+ end
+
def test_install_from_gemdeps_lockfile
spec_fetcher do |fetcher|
fetcher.gem 'a', 1
diff --git a/test/rubygems/test_gem_resolver.rb b/test/rubygems/test_gem_resolver.rb
index 7d3311c14c..c97e9e710c 100644
--- a/test/rubygems/test_gem_resolver.rb
+++ b/test/rubygems/test_gem_resolver.rb
@@ -33,6 +33,14 @@ class TestGemResolver < Gem::TestCase
assert_same Gem::Resolver, Gem::DependencyResolver
end
+ def test_self_compose_sets_best_set
+ best_set = @DR::BestSet.new
+
+ composed = @DR.compose_sets best_set
+
+ assert_equal best_set, composed
+ end
+
def test_self_compose_sets_multiple
index_set = @DR::IndexSet.new
vendor_set = @DR::VendorSet.new
diff --git a/test/rubygems/test_gem_resolver_api_set.rb b/test/rubygems/test_gem_resolver_api_set.rb
index 288f496c93..245f6c1d24 100644
--- a/test/rubygems/test_gem_resolver_api_set.rb
+++ b/test/rubygems/test_gem_resolver_api_set.rb
@@ -17,6 +17,14 @@ class TestGemResolverAPISet < Gem::TestCase
assert_equal Gem::Source.new(URI('https://rubygems.org')), set.source
end
+ def test_initialize_deeper_uri
+ set = @DR::APISet.new 'https://rubygemsserver.com/mygems/api/v1/dependencies'
+
+ assert_equal URI('https://rubygemsserver.com/mygems/api/v1/dependencies'), set.dep_uri
+ assert_equal URI('https://rubygemsserver.com/mygems/'), set.uri
+ assert_equal Gem::Source.new(URI('https://rubygemsserver.com/mygems/')), set.source
+ end
+
def test_initialize_uri
set = @DR::APISet.new @dep_uri
@@ -74,6 +82,15 @@ class TestGemResolverAPISet < Gem::TestCase
assert_equal expected, set.find_all(a_dep)
end
+ def test_find_all_local
+ set = @DR::APISet.new @dep_uri
+ set.remote = false
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+
+ assert_empty set.find_all(a_dep)
+ end
+
def test_find_all_missing
spec_fetcher
@@ -163,5 +180,29 @@ class TestGemResolverAPISet < Gem::TestCase
set.prefetch [a_dep, b_dep]
end
+ def test_prefetch_local
+ spec_fetcher
+
+ data = [
+ { :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [], },
+ ]
+
+ @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
+
+ set = @DR::APISet.new @dep_uri
+ set.remote = false
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+ b_dep = @DR::DependencyRequest.new dep('b'), nil
+
+ set.prefetch [a_dep, b_dep]
+
+ assert_empty set.instance_variable_get :@data
+ end
+
end
diff --git a/test/rubygems/test_gem_resolver_best_set.rb b/test/rubygems/test_gem_resolver_best_set.rb
index 5bcff4aca7..2d16f8b701 100644
--- a/test/rubygems/test_gem_resolver_best_set.rb
+++ b/test/rubygems/test_gem_resolver_best_set.rb
@@ -8,6 +8,12 @@ class TestGemResolverBestSet < Gem::TestCase
@DR = Gem::Resolver
end
+ def test_initialize
+ set = @DR::BestSet.new
+
+ assert_empty set.sets
+ end
+
def test_find_all_index
spec_fetcher do |fetcher|
fetcher.spec 'a', 1
@@ -26,5 +32,49 @@ class TestGemResolverBestSet < Gem::TestCase
assert_equal %w[a-1], found.map { |s| s.full_name }
end
+ def test_find_all_local
+ spec_fetcher do |fetcher|
+ fetcher.spec 'a', 1
+ fetcher.spec 'a', 2
+ fetcher.spec 'b', 1
+ end
+
+ set = @DR::BestSet.new
+ set.remote = false
+
+ dependency = dep 'a', '~> 1'
+
+ req = @DR::DependencyRequest.new dependency, nil
+
+ found = set.find_all req
+
+ assert_empty found
+ end
+
+ def test_prefetch
+ spec_fetcher do |fetcher|
+ fetcher.spec 'a', 1
+ end
+
+ set = @DR::BestSet.new
+
+ set.prefetch []
+
+ refute_empty set.sets
+ end
+
+ def test_prefetch_local
+ spec_fetcher do |fetcher|
+ fetcher.spec 'a', 1
+ end
+
+ set = @DR::BestSet.new
+ set.remote = false
+
+ set.prefetch []
+
+ assert_empty set.sets
+ end
+
end
diff --git a/test/rubygems/test_gem_resolver_composed_set.rb b/test/rubygems/test_gem_resolver_composed_set.rb
new file mode 100644
index 0000000000..85026f7eb9
--- /dev/null
+++ b/test/rubygems/test_gem_resolver_composed_set.rb
@@ -0,0 +1,18 @@
+require 'rubygems/test_case'
+
+class TestGemResolverComposedSet < Gem::TestCase
+
+ def test_remote_equals
+ best_set = Gem::Resolver::BestSet.new
+ current_set = Gem::Resolver::CurrentSet.new
+
+ set = Gem::Resolver::ComposedSet.new best_set, current_set
+
+ set.remote = false
+
+ refute best_set.remote?
+ refute current_set.remote?
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_resolver_git_set.rb b/test/rubygems/test_gem_resolver_git_set.rb
index 4643624ee0..f82b942777 100644
--- a/test/rubygems/test_gem_resolver_git_set.rb
+++ b/test/rubygems/test_gem_resolver_git_set.rb
@@ -70,6 +70,21 @@ class TestGemResolverGitSet < Gem::TestCase
assert_equal [@set.specs['a']], found
end
+ def test_find_all_local
+ name, _, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', false
+ @set.remote = false
+
+ dependency = dep 'a', '~> 1.0'
+ req = Gem::Resolver::DependencyRequest.new dependency, nil
+ @reqs.add req
+
+ @set.prefetch @reqs
+
+ assert_empty @set.find_all dependency
+ end
+
def test_root_dir
assert_equal Gem.dir, @set.root_dir
diff --git a/test/rubygems/test_gem_resolver_index_set.rb b/test/rubygems/test_gem_resolver_index_set.rb
index 137e9b5cac..b0adc511c9 100644
--- a/test/rubygems/test_gem_resolver_index_set.rb
+++ b/test/rubygems/test_gem_resolver_index_set.rb
@@ -24,5 +24,40 @@ class TestGemResolverIndexSet < Gem::TestCase
refute_same Gem::SpecFetcher.fetcher, fetcher
end
+ def test_find_all
+ spec_fetcher do |fetcher|
+ fetcher.spec 'a', 1
+ fetcher.spec 'a', 2
+ fetcher.spec 'b', 1
+ end
+
+ set = @DR::BestSet.new
+
+ dependency = dep 'a', '~> 1'
+
+ req = @DR::DependencyRequest.new dependency, nil
+
+ found = set.find_all req
+
+ assert_equal %w[a-1], found.map { |s| s.full_name }
+ end
+
+ def test_find_all_local
+ spec_fetcher do |fetcher|
+ fetcher.spec 'a', 1
+ fetcher.spec 'a', 2
+ fetcher.spec 'b', 1
+ end
+
+ set = @DR::BestSet.new
+ set.remote = false
+
+ dependency = dep 'a', '~> 1'
+
+ req = @DR::DependencyRequest.new dependency, nil
+
+ assert_empty set.find_all req
+ end
+
end
diff --git a/test/rubygems/test_gem_resolver_installer_set.rb b/test/rubygems/test_gem_resolver_installer_set.rb
index af4db646a9..258f9bc803 100644
--- a/test/rubygems/test_gem_resolver_installer_set.rb
+++ b/test/rubygems/test_gem_resolver_installer_set.rb
@@ -2,6 +2,34 @@ require 'rubygems/test_case'
class TestGemResolverInstallerSet < Gem::TestCase
+ def test_consider_local_eh
+ set = Gem::Resolver::InstallerSet.new :remote
+
+ refute set.consider_local?
+
+ set = Gem::Resolver::InstallerSet.new :both
+
+ assert set.consider_local?
+
+ set = Gem::Resolver::InstallerSet.new :local
+
+ assert set.consider_local?
+ end
+
+ def test_consider_remote_eh
+ set = Gem::Resolver::InstallerSet.new :remote
+
+ assert set.consider_remote?
+
+ set = Gem::Resolver::InstallerSet.new :both
+
+ assert set.consider_remote?
+
+ set = Gem::Resolver::InstallerSet.new :local
+
+ refute set.consider_remote?
+ end
+
def test_load_spec
specs = spec_fetcher do |fetcher|
fetcher.spec 'a', 2
@@ -18,5 +46,47 @@ class TestGemResolverInstallerSet < Gem::TestCase
assert_equal specs["a-2-#{Gem::Platform.local}"].full_name, spec.full_name
end
+ def test_remote_equals_both
+ set = Gem::Resolver::InstallerSet.new :both
+ set.remote = true
+
+ assert set.consider_local?
+ assert set.consider_remote?
+
+ set = Gem::Resolver::InstallerSet.new :both
+ set.remote = false
+
+ assert set.consider_local?
+ refute set.consider_remote?
+ end
+
+ def test_remote_equals_local
+ set = Gem::Resolver::InstallerSet.new :local
+ set.remote = true
+
+ assert set.consider_local?
+ assert set.consider_remote?
+
+ set = Gem::Resolver::InstallerSet.new :local
+ set.remote = false
+
+ assert set.consider_local?
+ refute set.consider_remote?
+ end
+
+ def test_remote_equals_remote
+ set = Gem::Resolver::InstallerSet.new :remote
+ set.remote = true
+
+ refute set.consider_local?
+ assert set.consider_remote?
+
+ set = Gem::Resolver::InstallerSet.new :remote
+ set.remote = false
+
+ refute set.consider_local?
+ refute set.consider_remote?
+ end
+
end
diff --git a/test/rubygems/test_gem_source_git.rb b/test/rubygems/test_gem_source_git.rb
index 026492ece0..58bff84490 100644
--- a/test/rubygems/test_gem_source_git.rb
+++ b/test/rubygems/test_gem_source_git.rb
@@ -27,6 +27,26 @@ class TestGemSourceGit < Gem::TestCase
assert_path_exists File.join @source.install_dir, 'a.gemspec'
end
+ def test_checkout_local
+ @source.remote = false
+
+ @source.checkout
+
+ install_dir = File.join Gem.dir, 'bundler', 'gems', "a-#{@head[0..11]}"
+
+ refute_path_exists File.join install_dir, 'a.gemspec'
+ end
+
+ def test_checkout_local_cached
+ @source.cache
+
+ @source.remote = false
+
+ @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
@@ -54,6 +74,14 @@ class TestGemSourceGit < Gem::TestCase
end
end
+ def test_cache_local
+ @source.remote = false
+
+ @source.cache
+
+ refute_path_exists @source.repo_cache_dir
+ end
+
def test_dir_shortref
@source.cache
@@ -99,6 +127,12 @@ class TestGemSourceGit < Gem::TestCase
assert_equal expected, @source.install_dir
end
+ def test_install_dir_local
+ @source.remote = false
+
+ assert_nil @source.install_dir
+ end
+
def test_repo_cache_dir
expected =
File.join Gem.dir, 'cache', 'bundler', 'git', "a-#{@hash}"
@@ -211,6 +245,15 @@ class TestGemSourceGit < Gem::TestCase
assert_equal extension_dir, b_spec.extension_dir
end
+ def test_specs_local
+ source = Gem::Source::Git.new @name, @repository, 'master', true
+ source.remote = false
+
+ capture_io do
+ assert_empty source.specs
+ end
+ end
+
def test_uri_hash
assert_equal @hash, @source.uri_hash
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index b72a5d1baf..cd2a5aba3b 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -1789,20 +1789,17 @@ dependencies: []
end
def test_require_paths
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
- RbConfig::CONFIG['ENABLE_SHARED'], 'no'
-
- ext_spec
+ enable_shared 'no' do
+ ext_spec
- @ext.require_path = 'lib'
+ @ext.require_path = 'lib'
- ext_install_dir = Pathname(@ext.extension_dir)
- full_gem_path = Pathname(@ext.full_gem_path)
- relative_install_dir = ext_install_dir.relative_path_from full_gem_path
+ ext_install_dir = Pathname(@ext.extension_dir)
+ full_gem_path = Pathname(@ext.full_gem_path)
+ relative_install_dir = ext_install_dir.relative_path_from full_gem_path
- assert_equal [relative_install_dir.to_s, 'lib'], @ext.require_paths
- ensure
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
+ assert_equal [relative_install_dir.to_s, 'lib'], @ext.require_paths
+ end
end
def test_source