mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 08:33:58 +02:00
Sync rubygems with current master (#2889)
This commit is contained in:
parent
930b012ad9
commit
96064e6f1c
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
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue