diff options
| -rw-r--r-- | lib/rubygems.rb | 2 | ||||
| -rw-r--r-- | lib/rubygems/spec_fetcher.rb | 2 | ||||
| -rw-r--r-- | test/rubygems/test_gem.rb | 44 |
3 files changed, 46 insertions, 2 deletions
diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 8e050ef3c7..f803e47628 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -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 diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb index 68ff605a83..b97bd49692 100644 --- a/lib/rubygems/spec_fetcher.rb +++ b/lib/rubygems/spec_fetcher.rb @@ -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 diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 3c95982d4b..f0f36b5561 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -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 |
