summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/resolver/best_set.rb30
-rw-r--r--lib/rubygems/source.rb2
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb82
-rw-r--r--test/rubygems/test_gem_source.rb2
-rw-r--r--test/rubygems/test_gem_source_subpath_problem.rb2
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