diff options
-rw-r--r-- | lib/rubygems/resolver/best_set.rb | 30 | ||||
-rw-r--r-- | lib/rubygems/source.rb | 2 | ||||
-rw-r--r-- | test/rubygems/test_gem_resolver_best_set.rb | 82 | ||||
-rw-r--r-- | test/rubygems/test_gem_source.rb | 2 | ||||
-rw-r--r-- | test/rubygems/test_gem_source_subpath_problem.rb | 2 |
5 files changed, 8 insertions, 110 deletions
diff --git a/lib/rubygems/resolver/best_set.rb b/lib/rubygems/resolver/best_set.rb index a983f8c6b6..57d0d00375 100644 --- a/lib/rubygems/resolver/best_set.rb +++ b/lib/rubygems/resolver/best_set.rb @@ -29,10 +29,8 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet pick_sets if @remote && @sets.empty? super - rescue Gem::RemoteFetcher::FetchError => e - replace_failed_api_set e - - retry + rescue Gem::RemoteFetcher::FetchError + [] end def prefetch(reqs) # :nodoc: @@ -50,28 +48,4 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet q.pp @sets end end - - ## - # Replaces a failed APISet for the URI in +error+ with an IndexSet. - # - # If no matching APISet can be found the original +error+ is raised. - # - # The calling method must retry the exception to repeat the lookup. - - def replace_failed_api_set(error) # :nodoc: - uri = error.original_uri - uri = Gem::URI uri unless Gem::URI === uri - uri += "." - - raise error unless api_set = @sets.find do |set| - Gem::Resolver::APISet === set && set.dep_uri == uri - end - - index_set = Gem::Resolver::IndexSet.new api_set.source - - @sets.map! do |set| - next set unless set == api_set - index_set - end - end end diff --git a/lib/rubygems/source.rb b/lib/rubygems/source.rb index 4e5545982d..59dcc2e1e1 100644 --- a/lib/rubygems/source.rb +++ b/lib/rubygems/source.rb @@ -79,7 +79,7 @@ class Gem::Source uri end - bundler_api_uri = enforce_trailing_slash(fetch_uri) + bundler_api_uri = enforce_trailing_slash(fetch_uri) + "./versions" begin fetcher = Gem::RemoteFetcher.fetcher diff --git a/test/rubygems/test_gem_resolver_best_set.rb b/test/rubygems/test_gem_resolver_best_set.rb index 8a750cdf8f..02f542efc0 100644 --- a/test/rubygems/test_gem_resolver_best_set.rb +++ b/test/rubygems/test_gem_resolver_best_set.rb @@ -9,33 +9,17 @@ class TestGemResolverBestSet < Gem::TestCase assert_empty set.sets end - def test_find_all_index + def test_find_all spec_fetcher do |fetcher| fetcher.spec "a", 1 - fetcher.spec "a", 2 - fetcher.spec "b", 1 end - set = Gem::Resolver::BestSet.new - - dependency = dep "a", "~> 1" - - req = Gem::Resolver::DependencyRequest.new dependency, nil - - found = set.find_all req - - assert_equal %w[a-1], found.map(&:full_name) - end + api_uri = Gem::URI "#{@gem_repo}info/" - def test_find_all_fallback - spec_fetcher do |fetcher| - fetcher.spec "a", 1 - end + @fetcher.data["#{api_uri}a"] = "---\n1 " set = Gem::Resolver::BestSet.new - api_uri = Gem::URI(@gem_repo) - set.sets << Gem::Resolver::APISet.new(api_uri) dependency = dep "a", "~> 1" @@ -90,64 +74,4 @@ class TestGemResolverBestSet < Gem::TestCase assert_empty set.sets end - - def test_replace_failed_api_set - set = Gem::Resolver::BestSet.new - - api_uri = Gem::URI(@gem_repo) + "./info/" - api_set = Gem::Resolver::APISet.new api_uri - - set.sets << api_set - - error_uri = api_uri + "a" - - error = Gem::RemoteFetcher::FetchError.new "bogus", error_uri - - set.replace_failed_api_set error - - assert_equal 1, set.sets.size - - refute_includes set.sets, api_set - - assert_kind_of Gem::Resolver::IndexSet, set.sets.first - end - - def test_replace_failed_api_set_no_api_set - set = Gem::Resolver::BestSet.new - - index_set = Gem::Resolver::IndexSet.new Gem::Source.new @gem_repo - - set.sets << index_set - - error = Gem::RemoteFetcher::FetchError.new "bogus", @gem_repo - - e = assert_raise Gem::RemoteFetcher::FetchError do - set.replace_failed_api_set error - end - - assert_equal error, e - end - - def test_replace_failed_api_set_uri_with_credentials - set = Gem::Resolver::BestSet.new - - api_uri = Gem::URI(@gem_repo) + "./info/" - api_uri.user = "user" - api_uri.password = "pass" - api_set = Gem::Resolver::APISet.new api_uri - - set.sets << api_set - - error_uri = api_uri + "a" - - error = Gem::RemoteFetcher::FetchError.new "bogus", error_uri - - set.replace_failed_api_set error - - assert_equal 1, set.sets.size - - refute_includes set.sets, api_set - - assert_kind_of Gem::Resolver::IndexSet, set.sets.first - end end diff --git a/test/rubygems/test_gem_source.rb b/test/rubygems/test_gem_source.rb index 6baa203dcb..423abd6dd2 100644 --- a/test/rubygems/test_gem_source.rb +++ b/test/rubygems/test_gem_source.rb @@ -46,7 +46,7 @@ class TestGemSource < Gem::TestCase response = Gem::Net::HTTPResponse.new "1.1", 200, "OK" response.uri = Gem::URI("http://example") - @fetcher.data[@gem_repo] = response + @fetcher.data["#{@gem_repo}versions"] = response set = @source.dependency_resolver_set diff --git a/test/rubygems/test_gem_source_subpath_problem.rb b/test/rubygems/test_gem_source_subpath_problem.rb index a451a81a25..ad11529f67 100644 --- a/test/rubygems/test_gem_source_subpath_problem.rb +++ b/test/rubygems/test_gem_source_subpath_problem.rb @@ -24,7 +24,7 @@ class TestGemSourceSubpathProblem < Gem::TestCase response = Gem::Net::HTTPResponse.new "1.1", 200, "OK" response.uri = Gem::URI("http://example") - @fetcher.data["#{@gem_repo}/"] = response + @fetcher.data["#{@gem_repo}/versions"] = response set = @source.dependency_resolver_set |