Sync rubygems with current master (#2889)

This commit is contained in:
David Rodríguez 2020-03-24 07:39:24 +01:00 committed by GitHub
parent 930b012ad9
commit 96064e6f1c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: git 2020-03-24 15:39:48 +09:00
Merged-By: hsbt <hsbt@ruby-lang.org>
33 changed files with 434 additions and 559 deletions

View file

@ -48,69 +48,6 @@ class TestGemDependencyInstaller < Gem::TestCase
util_reset_gems
end
def test_available_set_for_name
util_setup_gems
p1a, = util_gem 'a', '10.a'
util_setup_spec_fetcher p1a, @a1, @a1_pre
inst = Gem::DependencyInstaller.new
available = Gem::Deprecate.skip_during do
inst.available_set_for 'a', Gem::Requirement.default
end
assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
end
def test_available_set_for_name_prerelease
util_setup_gems
p1a, = util_gem 'a', '10.a'
util_setup_spec_fetcher p1a, @a1, @a1_pre
inst = Gem::DependencyInstaller.new :prerelease => true
available = Gem::Deprecate.skip_during do
inst.available_set_for 'a', Gem::Requirement.default
end
assert_equal %w[a-10.a],
available.sorted.map { |s| s.spec.full_name }
end
def test_available_set_for_dep
util_setup_gems
p1a, = util_gem 'a', '10.a'
util_setup_spec_fetcher p1a, @a1, @a1_pre
inst = Gem::DependencyInstaller.new
dep = Gem::Dependency.new 'a', Gem::Requirement.default
available = Gem::Deprecate.skip_during do
inst.available_set_for dep, Gem::Requirement.default
end
assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
end
def test_available_set_for_dep_prerelease
util_setup_gems
p1a, = util_gem 'a', '10.a'
util_setup_spec_fetcher p1a, @a1, @a1_pre
inst = Gem::DependencyInstaller.new :prerelease => true
dep = Gem::Dependency.new 'a', Gem::Requirement.default
dep.prerelease = true
available = Gem::Deprecate.skip_during do
inst.available_set_for dep, Gem::Requirement.default
end
assert_equal %w[a-10.a],
available.sorted.map { |s| s.spec.full_name }
end
def test_install
util_setup_gems
@ -974,191 +911,6 @@ class TestGemDependencyInstaller < Gem::TestCase
assert_equal %w[d-2], inst.installed_gems.map { |s| s.full_name }
end
def test_find_gems_gems_with_sources
util_setup_gems
inst = Gem::DependencyInstaller.new
dep = Gem::Dependency.new 'b', '>= 0'
Gem::Specification.reset
set = Gem::Deprecate.skip_during do
inst.find_gems_with_sources(dep)
end
assert_kind_of Gem::AvailableSet, set
s = set.set.first
assert_equal @b1, s.spec
assert_equal Gem::Source.new(@gem_repo), s.source
end
def test_find_spec_by_name_and_version_wildcard
util_gem 'a', 1
FileUtils.mv 'gems/a-1.gem', @tempdir
FileUtils.touch 'rdoc.gem'
inst = Gem::DependencyInstaller.new
available = Gem::Deprecate.skip_during do
inst.find_spec_by_name_and_version('*.gem')
end
assert_equal %w[a-1], available.each_spec.map { |spec| spec.full_name }
end
def test_find_spec_by_name_and_version_wildcard_bad_gem
FileUtils.touch 'rdoc.gem'
inst = Gem::DependencyInstaller.new
assert_raises Gem::Package::FormatError do
Gem::Deprecate.skip_during do
inst.find_spec_by_name_and_version '*.gem'
end
end
end
def test_find_spec_by_name_and_version_bad_gem
FileUtils.touch 'rdoc.gem'
inst = Gem::DependencyInstaller.new
e = assert_raises Gem::Package::FormatError do
Gem::Deprecate.skip_during do
inst.find_spec_by_name_and_version 'rdoc.gem'
end
end
full_path = File.join @tempdir, 'rdoc.gem'
assert_equal "package metadata is missing in #{full_path}", e.message
end
def test_find_spec_by_name_and_version_directory
Dir.mkdir 'rdoc'
inst = Gem::DependencyInstaller.new
e = assert_raises Gem::SpecificGemNotFoundException do
Gem::Deprecate.skip_during do
inst.find_spec_by_name_and_version 'rdoc'
end
end
assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
"locally or in a repository",
e.message
end
def test_find_spec_by_name_and_version_file
FileUtils.touch 'rdoc'
inst = Gem::DependencyInstaller.new
e = assert_raises Gem::SpecificGemNotFoundException do
Gem::Deprecate.skip_during do
inst.find_spec_by_name_and_version 'rdoc'
end
end
assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
"locally or in a repository",
e.message
end
def test_find_gems_with_sources_local
util_setup_gems
FileUtils.mv @a1_gem, @tempdir
inst = Gem::DependencyInstaller.new
dep = Gem::Dependency.new 'a', '>= 0'
set = nil
Dir.chdir @tempdir do
set = Gem::Deprecate.skip_during do
inst.find_gems_with_sources dep
end
end
gems = set.sorted
assert_equal 2, gems.length
remote, local = gems
assert_equal 'a-1', local.spec.full_name, 'local spec'
assert_equal File.join(@tempdir, @a1.file_name),
local.source.download(local.spec), 'local path'
assert_equal 'a-1', remote.spec.full_name, 'remote spec'
assert_equal Gem::Source.new(@gem_repo), remote.source, 'remote path'
end
def test_find_gems_with_sources_prerelease
util_setup_gems
installer = Gem::DependencyInstaller.new
dependency = Gem::Dependency.new('a', Gem::Requirement.default)
set = Gem::Deprecate.skip_during do
installer.find_gems_with_sources(dependency)
end
releases = set.all_specs
assert releases.any? { |s| s.name == 'a' and s.version.to_s == '1' }
refute releases.any? { |s| s.name == 'a' and s.version.to_s == '1.a' }
dependency.prerelease = true
set = Gem::Deprecate.skip_during do
installer.find_gems_with_sources(dependency)
end
prereleases = set.all_specs
assert_equal [@a1_pre, @a1], prereleases
end
def test_find_gems_with_sources_with_best_only_and_platform
util_setup_gems
a1_x86_mingw32, = util_gem 'a', '1' do |s|
s.platform = 'x86-mingw32'
end
util_setup_spec_fetcher @a1, a1_x86_mingw32
Gem.platforms << Gem::Platform.new('x86-mingw32')
installer = Gem::DependencyInstaller.new
dependency = Gem::Dependency.new('a', Gem::Requirement.default)
set = Gem::Deprecate.skip_during do
installer.find_gems_with_sources(dependency, true)
end
releases = set.all_specs
assert_equal [a1_x86_mingw32], releases
end
def test_find_gems_with_sources_with_bad_source
Gem.sources.replace ["http://not-there.nothing"]
installer = Gem::DependencyInstaller.new
dep = Gem::Dependency.new('a')
out = Gem::Deprecate.skip_during do
installer.find_gems_with_sources(dep)
end
assert out.empty?
assert_kind_of Gem::SourceFetchProblem, installer.errors.first
end
def test_resolve_dependencies
util_setup_gems