summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2020-12-23 08:45:19 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-12-23 10:17:41 +0900
commit339227363ce0cf967fa17efa4489d823932ddabd (patch)
tree576482ce00d03439f2dbf4714a6f309293884c2f /test
parent733ed1e18498f97250b788f169c37b170e0cf2b6 (diff)
Merge RubyGems 3.2.3 and Bundler 2.2.3
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3982
Diffstat (limited to 'test')
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb131
-rw-r--r--test/rubygems/test_gem_installer.rb66
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb78
-rw-r--r--test/rubygems/test_gem_resolver_api_specification.rb6
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb6
-rw-r--r--test/rubygems/test_gem_source.rb4
-rw-r--r--test/rubygems/test_gem_source_subpath_problem.rb4
7 files changed, 173 insertions, 122 deletions
diff --git a/test/rubygems/test_gem_commands_install_command.rb b/test/rubygems/test_gem_commands_install_command.rb
index 08530bfeca..c8015f9985 100644
--- a/test/rubygems/test_gem_commands_install_command.rb
+++ b/test/rubygems/test_gem_commands_install_command.rb
@@ -504,6 +504,137 @@ ERROR: Possible alternatives: non_existent_with_hint
assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
end
+ def test_execute_required_ruby_version
+ next_ruby = Gem.ruby_version.segments.map.with_index{|n, i| i == 1 ? n + 1 : n }.join(".")
+
+ local = Gem::Platform.local
+ spec_fetcher do |fetcher|
+ fetcher.download 'a', 2
+ fetcher.download 'a', 2 do |s|
+ s.required_ruby_version = "< #{RUBY_VERSION}.a"
+ s.platform = local
+ end
+ fetcher.download 'a', 3 do |s|
+ s.required_ruby_version = ">= #{next_ruby}"
+ end
+ fetcher.download 'a', 3 do |s|
+ s.required_ruby_version = ">= #{next_ruby}"
+ s.platform = local
+ end
+ end
+
+ @cmd.options[:args] = %w[a]
+
+ use_ui @ui do
+ assert_raises Gem::MockGemUi::SystemExitException, @ui.error do
+ @cmd.execute
+ end
+ end
+
+ assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
+ end
+
+ def test_execute_required_ruby_version_upper_bound
+ local = Gem::Platform.local
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', 2.0
+ fetcher.gem 'a', 2.0 do |s|
+ s.required_ruby_version = "< #{RUBY_VERSION}.a"
+ s.platform = local
+ end
+ end
+
+ @cmd.options[:args] = %w[a]
+
+ use_ui @ui do
+ assert_raises Gem::MockGemUi::SystemExitException, @ui.error do
+ @cmd.execute
+ end
+ end
+
+ assert_equal %w[a-2.0], @cmd.installed_specs.map {|spec| spec.full_name }
+ end
+
+ def test_execute_required_ruby_version_specific_not_met
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', '1.0' do |s|
+ s.required_ruby_version = '= 1.4.6'
+ end
+ end
+
+ @cmd.options[:args] = %w[a]
+
+ use_ui @ui do
+ assert_raises Gem::MockGemUi::TermError do
+ @cmd.execute
+ end
+ end
+
+ errs = @ui.error.split("\n")
+ assert_equal "ERROR: Error installing a:", errs.shift
+ assert_equal "\ta-1.0 requires Ruby version = 1.4.6. The current ruby version is #{Gem.ruby_version}.", errs.shift
+ end
+
+ def test_execute_required_ruby_version_specific_prerelease_met
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', '1.0' do |s|
+ s.required_ruby_version = '>= 1.4.6.preview2'
+ end
+ end
+
+ @cmd.options[:args] = %w[a]
+
+ use_ui @ui do
+ assert_raises Gem::MockGemUi::SystemExitException, @ui.error do
+ @cmd.execute
+ end
+ end
+
+ assert_equal %w[a-1.0], @cmd.installed_specs.map {|spec| spec.full_name }
+ end
+
+ def test_execute_required_ruby_version_specific_prerelease_not_met
+ next_ruby_pre = Gem.ruby_version.segments.map.with_index{|n, i| i == 1 ? n + 1 : n }.join(".") + ".a"
+
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', '1.0' do |s|
+ s.required_ruby_version = "> #{next_ruby_pre}"
+ end
+ end
+
+ @cmd.options[:args] = %w[a]
+
+ use_ui @ui do
+ assert_raises Gem::MockGemUi::TermError do
+ @cmd.execute
+ end
+ end
+
+ errs = @ui.error.split("\n")
+ assert_equal "ERROR: Error installing a:", errs.shift
+ assert_equal "\ta-1.0 requires Ruby version > #{next_ruby_pre}. The current ruby version is #{Gem.ruby_version}.", errs.shift
+ end
+
+ def test_execute_required_rubygems_version_wrong
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', '1.0' do |s|
+ s.required_rubygems_version = '< 0'
+ end
+ end
+
+ @cmd.options[:args] = %w[a]
+
+ use_ui @ui do
+ assert_raises Gem::MockGemUi::TermError do
+ @cmd.execute
+ end
+ end
+
+ errs = @ui.error.split("\n")
+ assert_equal "ERROR: Error installing a:", errs.shift
+ assert_equal "\ta-1.0 requires RubyGems version < 0. The current RubyGems version is #{Gem.rubygems_version}. Try 'gem update --system' to update RubyGems itself.", errs.shift
+ end
+
def test_execute_rdoc
specs = spec_fetcher do |fetcher|
fetcher.gem 'a', 2
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 0a9a2e38dd..4ce7e92442 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -1172,12 +1172,16 @@ gem 'other', version
end
def test_install_force
+ _, missing_dep_gem = util_gem 'missing_dep', '1' do |s|
+ s.add_dependency 'doesnt_exist', '1'
+ end
+
use_ui @ui do
- installer = Gem::Installer.at old_ruby_required('= 1.4.6'), :force => true
+ installer = Gem::Installer.at missing_dep_gem, :force => true
installer.install
end
- gem_dir = File.join(@gemhome, 'gems', 'old_ruby_required-1')
+ gem_dir = File.join(@gemhome, 'gems', 'missing_dep-1')
assert_path_exists gem_dir
end
@@ -1620,54 +1624,6 @@ gem 'other', version
end
end
- def test_pre_install_checks_ruby_version
- use_ui @ui do
- installer = Gem::Installer.at old_ruby_required('= 1.4.6')
- e = assert_raises Gem::RuntimeRequirementNotMetError do
- installer.pre_install_checks
- end
- rv = Gem.ruby_version
- assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
- e.message
- end
- end
-
- def test_pre_install_checks_ruby_version_with_prereleases
- util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
-
- installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
- assert installer.pre_install_checks
-
- installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
- e = assert_raises Gem::RuntimeRequirementNotMetError do
- assert installer.pre_install_checks
- end
- assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
- e.message
- ensure
- util_restore_RUBY_VERSION
- end
-
- def test_pre_install_checks_wrong_rubygems_version
- spec = util_spec 'old_rubygems_required', '1' do |s|
- s.required_rubygems_version = '< 0'
- end
-
- util_build_gem spec
-
- gem = File.join(@gemhome, 'cache', spec.file_name)
-
- use_ui @ui do
- installer = Gem::Installer.at gem
- e = assert_raises Gem::RuntimeRequirementNotMetError do
- installer.pre_install_checks
- end
- rgv = Gem::VERSION
- assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
- "Try 'gem update --system' to update RubyGems itself.", e.message
- end
- end
-
def test_pre_install_checks_malicious_name
spec = util_spec '../malicious', '1'
def spec.full_name # so the spec is buildable
@@ -2252,16 +2208,6 @@ gem 'other', version
assert_kind_of(String, installer.gem)
end
- def old_ruby_required(requirement)
- spec = util_spec 'old_ruby_required', '1' do |s|
- s.required_ruby_version = requirement
- end
-
- util_build_gem spec
-
- spec.cache_file
- end
-
def util_execless
@spec = util_spec 'z'
util_build_gem @spec
diff --git a/test/rubygems/test_gem_resolver_api_set.rb b/test/rubygems/test_gem_resolver_api_set.rb
index 8a838c761b..aa17ec6f3a 100644
--- a/test/rubygems/test_gem_resolver_api_set.rb
+++ b/test/rubygems/test_gem_resolver_api_set.rb
@@ -6,29 +6,29 @@ class TestGemResolverAPISet < Gem::TestCase
super
@DR = Gem::Resolver
- @dep_uri = URI "#{@gem_repo}api/v1/dependencies"
+ @dep_uri = URI "#{@gem_repo}info/"
end
def test_initialize
set = @DR::APISet.new
- assert_equal URI('https://rubygems.org/api/v1/dependencies'), set.dep_uri
- assert_equal URI('https://rubygems.org'), set.uri
- assert_equal Gem::Source.new(URI('https://rubygems.org')), set.source
+ assert_equal URI('https://index.rubygems.org/info/'), set.dep_uri
+ assert_equal URI('https://index.rubygems.org/'), set.uri
+ assert_equal Gem::Source.new(URI('https://index.rubygems.org')), set.source
end
def test_initialize_deeper_uri
- set = @DR::APISet.new 'https://rubygemsserver.com/mygems/api/v1/dependencies'
+ set = @DR::APISet.new 'https://rubygemsserver.com/mygems/info'
- 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
+ assert_equal URI('https://rubygemsserver.com/mygems/info'), set.dep_uri
+ assert_equal URI('https://rubygemsserver.com/'), set.uri
+ assert_equal Gem::Source.new(URI('https://rubygemsserver.com/')), set.source
end
def test_initialize_uri
set = @DR::APISet.new @dep_uri
- assert_equal URI("#{@gem_repo}api/v1/dependencies"), set.dep_uri
+ assert_equal URI("#{@gem_repo}info/"), set.dep_uri
assert_equal URI("#{@gem_repo}"), set.uri
end
@@ -42,7 +42,7 @@ class TestGemResolverAPISet < Gem::TestCase
:dependencies => [] },
]
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 "
set = @DR::APISet.new @dep_uri
@@ -69,7 +69,7 @@ class TestGemResolverAPISet < Gem::TestCase
:dependencies => [] },
]
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}a"] = "---\n1\n2.a"
set = @DR::APISet.new @dep_uri
set.prerelease = true
@@ -94,7 +94,7 @@ class TestGemResolverAPISet < Gem::TestCase
:dependencies => [] },
]
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 "
set = @DR::APISet.new @dep_uri
@@ -108,7 +108,7 @@ class TestGemResolverAPISet < Gem::TestCase
assert_equal expected, set.find_all(a_dep)
- @fetcher.data.delete "#{@dep_uri}?gems=a"
+ @fetcher.data.delete "#{@dep_uri}a"
end
def test_find_all_local
@@ -123,7 +123,7 @@ class TestGemResolverAPISet < Gem::TestCase
def test_find_all_missing
spec_fetcher
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump []
+ @fetcher.data["#{@dep_uri}a"] = "---"
set = @DR::APISet.new @dep_uri
@@ -131,7 +131,7 @@ class TestGemResolverAPISet < Gem::TestCase
assert_empty set.find_all(a_dep)
- @fetcher.data.delete "#{@dep_uri}?gems=a"
+ @fetcher.data.delete "#{@dep_uri}a"
assert_empty set.find_all(a_dep)
end
@@ -139,15 +139,8 @@ class TestGemResolverAPISet < Gem::TestCase
def test_prefetch
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 []
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
+ @fetcher.data["#{@dep_uri}b"] = "---"
set = @DR::APISet.new @dep_uri
@@ -163,14 +156,7 @@ class TestGemResolverAPISet < Gem::TestCase
def test_prefetch_cache
spec_fetcher
- data = [
- { :name => 'a',
- :number => '1',
- :platform => 'ruby',
- :dependencies => [] },
- ]
-
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
set = @DR::APISet.new @dep_uri
@@ -179,8 +165,8 @@ class TestGemResolverAPISet < Gem::TestCase
set.prefetch [a_dep]
- @fetcher.data.delete "#{@dep_uri}?gems=a"
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
+ @fetcher.data.delete "#{@dep_uri}a"
+ @fetcher.data["#{@dep_uri}?b"] = "---"
set.prefetch [a_dep, b_dep]
end
@@ -188,14 +174,8 @@ class TestGemResolverAPISet < Gem::TestCase
def test_prefetch_cache_missing
spec_fetcher
- data = [
- { :name => 'a',
- :number => '1',
- :platform => 'ruby',
- :dependencies => [] },
- ]
-
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
+ @fetcher.data["#{@dep_uri}b"] = "---"
set = @DR::APISet.new @dep_uri
@@ -204,7 +184,8 @@ class TestGemResolverAPISet < Gem::TestCase
set.prefetch [a_dep, b_dep]
- @fetcher.data.delete "#{@dep_uri}?gems=a,b"
+ @fetcher.data.delete "#{@dep_uri}a"
+ @fetcher.data.delete "#{@dep_uri}b"
set.prefetch [a_dep, b_dep]
end
@@ -212,15 +193,8 @@ class TestGemResolverAPISet < Gem::TestCase
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 []
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
+ @fetcher.data["#{@dep_uri}b"] = "---"
set = @DR::APISet.new @dep_uri
set.remote = false
diff --git a/test/rubygems/test_gem_resolver_api_specification.rb b/test/rubygems/test_gem_resolver_api_specification.rb
index 3db57677f3..e9ba4ae481 100644
--- a/test/rubygems/test_gem_resolver_api_specification.rb
+++ b/test/rubygems/test_gem_resolver_api_specification.rb
@@ -39,7 +39,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
rails = specs['rails-3.0.3']
- repo = @gem_repo + 'api/v1/dependencies'
+ repo = @gem_repo + 'info'
set = Gem::Resolver::APISet.new repo
@@ -123,7 +123,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
fetcher.spec 'a', 1
end
- dep_uri = URI(@gem_repo) + 'api/v1/dependencies'
+ dep_uri = URI(@gem_repo) + 'info'
set = Gem::Resolver::APISet.new dep_uri
data = {
:name => 'a',
@@ -147,7 +147,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
end
end
- dep_uri = URI(@gem_repo) + 'api/v1/dependencies'
+ dep_uri = URI(@gem_repo) + 'info'
set = Gem::Resolver::APISet.new dep_uri
data = {
:name => 'j',
diff --git a/test/rubygems/test_gem_resolver_best_set.rb b/test/rubygems/test_gem_resolver_best_set.rb
index 8218bf5d70..657ad33387 100644
--- a/test/rubygems/test_gem_resolver_best_set.rb
+++ b/test/rubygems/test_gem_resolver_best_set.rb
@@ -39,7 +39,7 @@ class TestGemResolverBestSet < Gem::TestCase
set = @DR::BestSet.new
- api_uri = URI(@gem_repo) + './api/v1/dependencies'
+ api_uri = URI(@gem_repo)
set.sets << Gem::Resolver::APISet.new(api_uri)
@@ -99,12 +99,12 @@ class TestGemResolverBestSet < Gem::TestCase
def test_replace_failed_api_set
set = @DR::BestSet.new
- api_uri = URI(@gem_repo) + './api/v1/dependencies'
+ api_uri = URI(@gem_repo) + './info/'
api_set = Gem::Resolver::APISet.new api_uri
set.sets << api_set
- error_uri = api_uri + '?gems=a'
+ error_uri = api_uri + 'a'
error = Gem::RemoteFetcher::FetchError.new 'bogus', error_uri
diff --git a/test/rubygems/test_gem_source.rb b/test/rubygems/test_gem_source.rb
index 09c510f096..d6c2ffa051 100644
--- a/test/rubygems/test_gem_source.rb
+++ b/test/rubygems/test_gem_source.rb
@@ -44,9 +44,9 @@ class TestGemSource < Gem::TestCase
def test_dependency_resolver_set_bundler_api
response = Net::HTTPResponse.new '1.1', 200, 'OK'
- response.uri = URI('http://example') if response.respond_to? :uri
+ response.uri = URI('http://example')
- @fetcher.data["#{@gem_repo}api/v1/dependencies"] = response
+ @fetcher.data[@gem_repo] = response
set = @source.dependency_resolver_set
diff --git a/test/rubygems/test_gem_source_subpath_problem.rb b/test/rubygems/test_gem_source_subpath_problem.rb
index eb92b7d404..b2289ea625 100644
--- a/test/rubygems/test_gem_source_subpath_problem.rb
+++ b/test/rubygems/test_gem_source_subpath_problem.rb
@@ -21,9 +21,9 @@ class TestGemSourceSubpathProblem < Gem::TestCase
def test_dependency_resolver_set
response = Net::HTTPResponse.new '1.1', 200, 'OK'
- response.uri = URI('http://example') if response.respond_to? :uri
+ response.uri = URI('http://example')
- @fetcher.data["#{@gem_repo}/api/v1/dependencies"] = response
+ @fetcher.data["#{@gem_repo}/"] = response
set = @source.dependency_resolver_set