mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 04:24:23 +00:00
[ruby/rubygems] Removed deprecated Gem::DependencyInstaller#find_gems_with_sources
https://github.com/ruby/rubygems/commit/1b3f3bf194
This commit is contained in:
parent
4622712695
commit
4a0465da61
@ -119,78 +119,6 @@ class Gem::DependencyInstaller
|
||||
@domain == :both || @domain == :remote
|
||||
end
|
||||
|
||||
##
|
||||
# Returns a list of pairs of gemspecs and source_uris that match
|
||||
# Gem::Dependency +dep+ from both local (Dir.pwd) and remote (Gem.sources)
|
||||
# sources. Gems are sorted with newer gems preferred over older gems, and
|
||||
# local gems preferred over remote gems.
|
||||
|
||||
def find_gems_with_sources(dep, best_only = false) # :nodoc:
|
||||
set = Gem::AvailableSet.new
|
||||
|
||||
if consider_local?
|
||||
sl = Gem::Source::Local.new
|
||||
|
||||
if spec = sl.find_gem(dep.name)
|
||||
if dep.matches_spec? spec
|
||||
set.add spec, sl
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if consider_remote?
|
||||
begin
|
||||
# This is pulled from #spec_for_dependency to allow
|
||||
# us to filter tuples before fetching specs.
|
||||
tuples, errors = Gem::SpecFetcher.fetcher.search_for_dependency dep
|
||||
|
||||
if best_only && !tuples.empty?
|
||||
tuples.sort! do |a,b|
|
||||
if b[0].version == a[0].version
|
||||
if b[0].platform != Gem::Platform::RUBY
|
||||
1
|
||||
else
|
||||
-1
|
||||
end
|
||||
else
|
||||
b[0].version <=> a[0].version
|
||||
end
|
||||
end
|
||||
tuples = [tuples.first]
|
||||
end
|
||||
|
||||
specs = []
|
||||
tuples.each do |tup, source|
|
||||
spec = source.fetch_spec(tup)
|
||||
rescue Gem::RemoteFetcher::FetchError => e
|
||||
errors << Gem::SourceFetchProblem.new(source, e)
|
||||
else
|
||||
specs << [spec, source]
|
||||
end
|
||||
|
||||
if @errors
|
||||
@errors += errors
|
||||
else
|
||||
@errors = errors
|
||||
end
|
||||
|
||||
set << specs
|
||||
rescue Gem::RemoteFetcher::FetchError => e
|
||||
# FIX if there is a problem talking to the network, we either need to always tell
|
||||
# the user (no really_verbose) or fail hard, not silently tell them that we just
|
||||
# couldn't find their requested gem.
|
||||
verbose do
|
||||
"Error fetching remote data:\t\t#{e.message}\n" \
|
||||
"Falling back to local-only install"
|
||||
end
|
||||
@domain = :local
|
||||
end
|
||||
end
|
||||
|
||||
set
|
||||
end
|
||||
rubygems_deprecate :find_gems_with_sources
|
||||
|
||||
def in_background(what) # :nodoc:
|
||||
fork_happened = false
|
||||
if @build_docs_in_background && Process.respond_to?(:fork)
|
||||
|
||||
@ -1114,117 +1114,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
||||
assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&: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_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" && s.version.to_s == "1" }
|
||||
refute releases.any? {|s| s.name == "a" && 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…
x
Reference in New Issue
Block a user