mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +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,8 +104,12 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
||||||
end
|
end
|
||||||
|
|
||||||
uri = @dep_uri + name
|
uri = @dep_uri + name
|
||||||
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
||||||
|
rescue Gem::RemoteFetcher::FetchError
|
||||||
|
@data[name] = []
|
||||||
|
else
|
||||||
lines(str).each do |ver|
|
lines(str).each do |ver|
|
||||||
number, platform, dependencies, requirements = parse_gem(ver)
|
number, platform, dependencies, requirements = parse_gem(ver)
|
||||||
|
|
||||||
|
@ -115,6 +119,7 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
||||||
|
|
||||||
@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
|
||||||
|
end
|
||||||
|
|
||||||
@data[name]
|
@data[name]
|
||||||
end
|
end
|
||||||
|
|
|
@ -29,8 +29,6 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
||||||
pick_sets if @remote && @sets.empty?
|
pick_sets if @remote && @sets.empty?
|
||||||
|
|
||||||
super
|
super
|
||||||
rescue Gem::RemoteFetcher::FetchError
|
|
||||||
[]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def prefetch(reqs) # :nodoc:
|
def prefetch(reqs) # :nodoc:
|
||||||
|
|
|
@ -136,6 +136,25 @@ class TestGemResolverAPISet < Gem::TestCase
|
||||||
assert_empty set.find_all(a_dep)
|
assert_empty set.find_all(a_dep)
|
||||||
end
|
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
|
def test_prefetch
|
||||||
spec_fetcher
|
spec_fetcher
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue