diff options
| author | Drew Rodman | 2014-02-18 15:08:03 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-02-18 15:08:03 -0500 |
| commit | c9bccb21873fe765dff681b005a330553cded898 (patch) | |
| tree | 17b650de2eb15a04a2adf0c2739908a28d4bd2d1 /Library | |
| parent | a53c2ac56024d0bf5dfc2b0dac8a11d2341cc6f5 (diff) | |
| download | homebrew-c9bccb21873fe765dff681b005a330553cded898.tar.bz2 | |
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 #18364.
Closes #26618.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/upgrade.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/exceptions.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/resource.rb | 12 |
3 files changed, 17 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index a68830a94..7682922b4 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -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 diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 66123d9f0..926407be7 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -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 diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 490c5dfb4..e0daf4a48 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -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 |
