ruby-changes:67487
From: Daniel <ko1@a...>
Date: Tue, 31 Aug 2021 19:08:12 +0900 (JST)
Subject: [ruby-changes:67487] 589377fbdc (master): [rubygems/rubygems] Refactor `Gem::RemoteFetcher::FetchError.build` back to its initialize method
https://git.ruby-lang.org/ruby.git/commit/?id=589377fbdc From 589377fbdce9d281041535e3bf63f008689bb776 Mon Sep 17 00:00:00 2001 From: Daniel Niknam <mhmd.niknam@g...> Date: Sun, 22 Aug 2021 20:06:02 +1000 Subject: [rubygems/rubygems] Refactor `Gem::RemoteFetcher::FetchError.build` back to its initialize method https://github.com/rubygems/rubygems/commit/21dcdd2dc5 --- lib/rubygems/remote_fetcher.rb | 35 ++++++++-------------- lib/rubygems/request.rb | 8 ++--- test/rubygems/test_gem_commands_sources_command.rb | 2 +- test/rubygems/test_gem_remote_fetcher.rb | 2 +- test/rubygems/test_gem_resolver_best_set.rb | 6 ++-- test/rubygems/test_gem_spec_fetcher.rb | 2 +- test/rubygems/test_remote_fetch_error.rb | 6 ++-- test/rubygems/utilities.rb | 4 +-- 8 files changed, 28 insertions(+), 37 deletions(-) diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 60c5da0..ba1c1cb 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -22,24 +22,15 @@ class Gem::RemoteFetcher https://github.com/ruby/ruby/blob/trunk/lib/rubygems/remote_fetcher.rb#L22 class FetchError < Gem::Exception ## # The URI which was being accessed when the exception happened. - def self.build(message, uri) - original_uri = uri.dup - uri = Gem::PrintableUri.parse_uri(uri) - - if uri.respond_to?(:original_password) && uri.original_password - message = message.sub(uri.original_password, 'REDACTED') - end - - new(message, uri.to_s, original_uri) - end - attr_accessor :uri, :original_uri - def initialize(message, uri, original_uri = nil) - super message + def initialize(message, uri) + @original_uri = uri.dup + uri = Gem::PrintableUri.parse_uri(uri) + + super(uri.valid_uri? && uri.original_password ? message.sub(uri.original_password, 'REDACTED') : message) - @uri = uri - @original_uri = original_uri ? original_uri : uri + @uri = uri.to_s end def to_s # :nodoc: @@ -225,20 +216,20 @@ class Gem::RemoteFetcher https://github.com/ruby/ruby/blob/trunk/lib/rubygems/remote_fetcher.rb#L216 head ? response : response.body when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther, Net::HTTPTemporaryRedirect then - raise FetchError.build('too many redirects', uri) if depth > 10 + raise FetchError.new('too many redirects', uri) if depth > 10 unless location = response['Location'] - raise FetchError.build("redirecting but no redirect location was given", uri) + raise FetchError.new("redirecting but no redirect location was given", uri) end location = Gem::UriParser.parse_uri location if https?(uri) && !https?(location) - raise FetchError.build("redirecting to non-https resource: #{location}", uri) + raise FetchError.new("redirecting to non-https resource: #{location}", uri) end fetch_http(location, last_modified, head, depth + 1) else - raise FetchError.build("bad response #{response.message} #{response.code}", uri) + raise FetchError.new("bad response #{response.message} #{response.code}", uri) end end @@ -260,21 +251,21 @@ class Gem::RemoteFetcher https://github.com/ruby/ruby/blob/trunk/lib/rubygems/remote_fetcher.rb#L251 begin data = Gem::Util.gunzip data rescue Zlib::GzipFile::Error - raise FetchError.build("server did not return a valid file", uri) + raise FetchError.new("server did not return a valid file", uri) end end data rescue Timeout::Error, IOError, SocketError, SystemCallError, *(OpenSSL::SSL::SSLError if Gem::HAVE_OPENSSL) => e - raise FetchError.build("#{e.class}: #{e}", uri) + raise FetchError.new("#{e.class}: #{e}", uri) end def fetch_s3(uri, mtime = nil, head = false) begin public_uri = s3_uri_signer(uri).sign rescue Gem::S3URISigner::ConfigurationError, Gem::S3URISigner::InstanceProfileError => e - raise FetchError.build(e.message, "s3://#{uri.host}") + raise FetchError.new(e.message, "s3://#{uri.host}") end fetch_https public_uri, mtime, head end diff --git a/lib/rubygems/request.rb b/lib/rubygems/request.rb index d0d9b58..fdc4c55 100644 --- a/lib/rubygems/request.rb +++ b/lib/rubygems/request.rb @@ -127,7 +127,7 @@ class Gem::Request https://github.com/ruby/ruby/blob/trunk/lib/rubygems/request.rb#L127 @connection_pool.checkout rescue Gem::HAVE_OPENSSL ? OpenSSL::SSL::SSLError : Errno::EHOSTDOWN, Errno::EHOSTDOWN => e - raise Gem::RemoteFetcher::FetchError.build(e.message, uri) + raise Gem::RemoteFetcher::FetchError.new(e.message, uri) end def fetch @@ -228,14 +228,14 @@ class Gem::Request https://github.com/ruby/ruby/blob/trunk/lib/rubygems/request.rb#L228 reset connection - raise Gem::RemoteFetcher::FetchError.build('too many bad responses', @uri) if bad_response + raise Gem::RemoteFetcher::FetchError.new('too many bad responses', @uri) if bad_response bad_response = true retry rescue Net::HTTPFatalError verbose "fatal error" - raise Gem::RemoteFetcher::FetchError.build('fatal error', @uri) + raise Gem::RemoteFetcher::FetchError.new('fatal error', @uri) # HACK work around EOFError bug in Net::HTTP # NOTE Errno::ECONNABORTED raised a lot on Windows, and make impossible # to install gems. @@ -245,7 +245,7 @@ class Gem::Request https://github.com/ruby/ruby/blob/trunk/lib/rubygems/request.rb#L245 requests = @requests[connection.object_id] verbose "connection reset after #{requests} requests, retrying" - raise Gem::RemoteFetcher::FetchError.build('too many connection resets', @uri) if retried + raise Gem::RemoteFetcher::FetchError.new('too many connection resets', @uri) if retried reset connection diff --git a/test/rubygems/test_gem_commands_sources_command.rb b/test/rubygems/test_gem_commands_sources_command.rb index 6fcbbf6..7bca0f3 100644 --- a/test/rubygems/test_gem_commands_sources_command.rb +++ b/test/rubygems/test_gem_commands_sources_command.rb @@ -182,7 +182,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_commands_sources_command.rb#L182 uri = "http://beta-gems.example.com/specs.#{@marshal_version}.gz" @fetcher.data[uri] = proc do - raise Gem::RemoteFetcher::FetchError.build('it died', uri) + raise Gem::RemoteFetcher::FetchError.new('it died', uri) end @cmd.handle_options %w[--add http://beta-gems.example.com] diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb index b4c82ce..5ce420b 100644 --- a/test/rubygems/test_gem_remote_fetcher.rb +++ b/test/rubygems/test_gem_remote_fetcher.rb @@ -204,7 +204,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg== https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_remote_fetcher.rb#L204 @test_data end - raise Gem::RemoteFetcher::FetchError.build("haha!", '') + raise Gem::RemoteFetcher::FetchError.new("haha!", '') end end diff --git a/test/rubygems/test_gem_resolver_best_set.rb b/test/rubygems/test_gem_resolver_best_set.rb index a448ec0..0e279d1 100644 --- a/test/rubygems/test_gem_resolver_best_set.rb +++ b/test/rubygems/test_gem_resolver_best_set.rb @@ -106,7 +106,7 @@ class TestGemResolverBestSet < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_resolver_best_set.rb#L106 error_uri = api_uri + 'a' - error = Gem::RemoteFetcher::FetchError.build 'bogus', error_uri + error = Gem::RemoteFetcher::FetchError.new 'bogus', error_uri set.replace_failed_api_set error @@ -124,7 +124,7 @@ class TestGemResolverBestSet < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_resolver_best_set.rb#L124 set.sets << index_set - error = Gem::RemoteFetcher::FetchError.build 'bogus', @gem_repo + error = Gem::RemoteFetcher::FetchError.new 'bogus', @gem_repo e = assert_raise Gem::RemoteFetcher::FetchError do set.replace_failed_api_set error @@ -145,7 +145,7 @@ class TestGemResolverBestSet < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_resolver_best_set.rb#L145 error_uri = api_uri + 'a' - error = Gem::RemoteFetcher::FetchError.build 'bogus', error_uri + error = Gem::RemoteFetcher::FetchError.new 'bogus', error_uri set.replace_failed_api_set error diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb index be862aa..afae46e 100644 --- a/test/rubygems/test_gem_spec_fetcher.rb +++ b/test/rubygems/test_gem_spec_fetcher.rb @@ -144,7 +144,7 @@ class TestGemSpecFetcher < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_spec_fetcher.rb#L144 def test_spec_for_dependency_bad_fetch_spec src = Gem::Source.new(@gem_repo) def src.fetch_spec(name) - raise Gem::RemoteFetcher::FetchError.build("bad news from the internet", @uri) + raise Gem::RemoteFetcher::FetchError.new("bad news from the internet", @uri) end Gem.sources.replace [src] diff --git a/test/rubygems/test_remote_fetch_error.rb b/test/rubygems/test_remote_fetch_error.rb index cdc9dda..b9e5838 100644 --- a/test/rubygems/test_remote_fetch_error.rb +++ b/test/rubygems/test_remote_fetch_error.rb @@ -3,17 +3,17 @@ require_relative 'helper' https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_remote_fetch_error.rb#L3 class TestRemoteFetchError < Gem::TestCase def test_password_redacted - error = Gem::RemoteFetcher::FetchError.build('There was an error fetching', 'https://user:secret@g...') + error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', ' (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/