mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
[rubygems/rubygems] Fix error in one source when fetching dependency APIs clearing results from all sources
0549ddbcc5
This commit is contained in:
parent
7469b8308d
commit
acbdb30941
3 changed files with 31 additions and 9 deletions
|
@ -104,16 +104,21 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|||
end
|
||||
|
||||
uri = @dep_uri + name
|
||||
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
||||
|
||||
lines(str).each do |ver|
|
||||
number, platform, dependencies, requirements = parse_gem(ver)
|
||||
begin
|
||||
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
||||
rescue Gem::RemoteFetcher::FetchError
|
||||
@data[name] = []
|
||||
else
|
||||
lines(str).each do |ver|
|
||||
number, platform, dependencies, requirements = parse_gem(ver)
|
||||
|
||||
platform ||= "ruby"
|
||||
dependencies = dependencies.map {|dep_name, reqs| [dep_name, reqs.join(", ")] }
|
||||
requirements = requirements.map {|req_name, reqs| [req_name.to_sym, reqs] }.to_h
|
||||
platform ||= "ruby"
|
||||
dependencies = dependencies.map {|dep_name, reqs| [dep_name, reqs.join(", ")] }
|
||||
requirements = requirements.map {|req_name, reqs| [req_name.to_sym, reqs] }.to_h
|
||||
|
||||
@data[name] << { name: name, number: number, platform: platform, dependencies: dependencies, requirements: requirements }
|
||||
@data[name] << { name: name, number: number, platform: platform, dependencies: dependencies, requirements: requirements }
|
||||
end
|
||||
end
|
||||
|
||||
@data[name]
|
||||
|
|
|
@ -29,8 +29,6 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|||
pick_sets if @remote && @sets.empty?
|
||||
|
||||
super
|
||||
rescue Gem::RemoteFetcher::FetchError
|
||||
[]
|
||||
end
|
||||
|
||||
def prefetch(reqs) # :nodoc:
|
||||
|
|
|
@ -136,6 +136,25 @@ class TestGemResolverAPISet < Gem::TestCase
|
|||
assert_empty set.find_all(a_dep)
|
||||
end
|
||||
|
||||
def test_find_all_not_found
|
||||
spec_fetcher
|
||||
|
||||
@fetcher.data["#{@dep_uri}/a"] =
|
||||
proc do
|
||||
raise Gem::RemoteFetcher::FetchError
|
||||
end
|
||||
|
||||
set = Gem::Resolver::APISet.new @dep_uri
|
||||
|
||||
a_dep = Gem::Resolver::DependencyRequest.new dep("a"), nil
|
||||
|
||||
assert_empty set.find_all(a_dep)
|
||||
|
||||
@fetcher.data.delete "#{@dep_uri}a"
|
||||
|
||||
assert_empty set.find_all(a_dep)
|
||||
end
|
||||
|
||||
def test_prefetch
|
||||
spec_fetcher
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue