1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[rubygems/rubygems] Properly fetch Gem#latest_spec_for with multiple sources

a93ec63df3
This commit is contained in:
Kevin Logan 2019-05-14 00:02:48 -05:00 committed by git
parent 0e60bc118b
commit eb2d3c19fe
3 changed files with 46 additions and 2 deletions

View file

@ -854,7 +854,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
fetcher = Gem::SpecFetcher.fetcher
spec_tuples, = fetcher.spec_for_dependency dependency
spec, = spec_tuples.first
spec, = spec_tuples.last
spec
end

View file

@ -121,7 +121,7 @@ class Gem::SpecFetcher
end
end
tuples = tuples.sort_by {|x| x[0] }
tuples = tuples.sort_by {|x| x[0].version }
return [tuples, errors]
end

View file

@ -888,6 +888,27 @@ class TestGem < Gem::TestCase
assert_equal gems['a-2'], spec
end
def test_self_latest_spec_for_multiple_sources
uri = 'https://example.sample.com/'
source = Gem::Source.new(uri)
source_list = Gem::SourceList.new
source_list << Gem::Source.new(@uri)
source_list << source
Gem.sources.replace source_list
spec_fetcher(uri) do |fetcher|
fetcher.spec 'a', 1.1
end
gems = spec_fetcher do |fetcher|
fetcher.spec 'a', 1
fetcher.spec 'a', '3.a'
fetcher.spec 'a', 2
end
spec = Gem.latest_spec_for 'a'
assert_equal gems['a-2'], spec
end
def test_self_latest_rubygems_version
spec_fetcher do |fetcher|
fetcher.spec 'rubygems-update', '1.8.23'
@ -912,6 +933,29 @@ class TestGem < Gem::TestCase
assert_equal Gem::Version.new(2), version
end
def test_self_latest_version_for_multiple_sources
uri = 'https://example.sample.com/'
source = Gem::Source.new(uri)
source_list = Gem::SourceList.new
source_list << Gem::Source.new(@uri)
source_list << source
Gem.sources.replace source_list
spec_fetcher(uri) do |fetcher|
fetcher.spec 'a', 1.1
end
spec_fetcher do |fetcher|
fetcher.spec 'a', 1
fetcher.spec 'a', 2
fetcher.spec 'a', '3.a'
end
version = Gem.latest_version_for 'a'
assert_equal Gem::Version.new(2), version
end
def test_self_loaded_specs
foo = util_spec 'foo'
install_gem foo