Add DownloadError to catch a broader range of resource download errors.
Adding a broader exception class allows for errors raised in Resource.fetch to be caught in upgrade and prevent the process from being killed when a download fails. This should resolve issue 18364. Fixes Homebrew/homebrew#18364. Closes Homebrew/homebrew#26618. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
parent
ca0eff67fa
commit
d63ef14794
@ -92,6 +92,8 @@ module Homebrew extend self
|
||||
e.dump
|
||||
puts
|
||||
Homebrew.failed = true
|
||||
rescue DownloadError => e
|
||||
ofail e
|
||||
ensure
|
||||
# restore previous installation state if build failed
|
||||
outdated_keg.link if outdated_keg and not f.installed? rescue nil
|
||||
|
||||
@ -229,6 +229,13 @@ class CompilerSelectionError < Homebrew::InstallationError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised in Resource.fetch
|
||||
class DownloadError < RuntimeError
|
||||
def initialize(formula)
|
||||
super "Failed to download resource for package: #{formula}"
|
||||
end
|
||||
end
|
||||
|
||||
# raised in CurlDownloadStrategy.fetch
|
||||
class CurlDownloadStrategyError < RuntimeError; end
|
||||
|
||||
|
||||
@ -76,10 +76,14 @@ class Resource
|
||||
|
||||
# For brew-fetch and others.
|
||||
def fetch
|
||||
# Ensure the cache exists
|
||||
HOMEBREW_CACHE.mkpath
|
||||
downloader.fetch
|
||||
cached_download
|
||||
begin
|
||||
# Ensure the cache exists
|
||||
HOMEBREW_CACHE.mkpath
|
||||
downloader.fetch
|
||||
cached_download
|
||||
rescue ErrorDuringExecution, CurlDownloadStrategyError => e
|
||||
raise DownloadError.new(downloader.name)
|
||||
end
|
||||
end
|
||||
|
||||
def verify_download_integrity fn
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user