diff --git a/maven/lib/dependabot/maven/update_checker/version_finder.rb b/maven/lib/dependabot/maven/update_checker/version_finder.rb index 100d6f22662..d97e97785c0 100644 --- a/maven/lib/dependabot/maven/update_checker/version_finder.rb +++ b/maven/lib/dependabot/maven/update_checker/version_finder.rb @@ -203,8 +203,18 @@ def fetch_dependency_metadata(repository_details) rescue URI::InvalidURIError nil rescue Excon::Error::Socket, Excon::Error::Timeout, - Excon::Error::TooManyRedirects - raise if central_repo_urls.include?(repository_details["url"]) + Excon::Error::TooManyRedirects => e + + if central_repo_urls.include?(repository_details["url"]) + response_status = response&.status || 0 + response_body = if response + "RegistryError: #{response.status} response status with body #{response.body}" + else + "RegistryError: #{e.message}" + end + + raise RegistryError.new(response_status, response_body) + end nil end diff --git a/maven/spec/dependabot/maven/update_checker/version_finder_spec.rb b/maven/spec/dependabot/maven/update_checker/version_finder_spec.rb index a29c0c6a22e..f3b8c79c2cb 100644 --- a/maven/spec/dependabot/maven/update_checker/version_finder_spec.rb +++ b/maven/spec/dependabot/maven/update_checker/version_finder_spec.rb @@ -524,6 +524,18 @@ end end + context "with an invalid repository url specified" do + let(:dependency_files) { project_dependency_files("invalid_repository_url") } + + before do + stub_request(:get, maven_central_metadata_url).to_raise(Excon::Error::Timeout) + end + + it "raises a helpful error" do + expect { latest_version_details }.to raise_error(Dependabot::RegistryError) + end + end + context "with a custom repository" do let(:pom_fixture_name) { "custom_repositories_pom.xml" }