Inline static exception text to remove a rescue

This commit is contained in:
Jack Nagel 2014-02-18 13:27:35 -05:00
parent 52f3c3b9e3
commit ca0eff67fa
4 changed files with 8 additions and 18 deletions

View File

@ -240,24 +240,20 @@ class ChecksumMissingError < ArgumentError; end
# raised by Pathname#verify_checksum when verification fails
class ChecksumMismatchError < RuntimeError
attr_accessor :advice
attr_reader :expected, :actual, :hash_type
attr_reader :expected, :hash_type
def initialize expected, actual
def initialize fn, expected, actual
@expected = expected
@actual = actual
@hash_type = expected.hash_type.to_s.upcase
super <<-EOS.undent
#{@hash_type} mismatch
Expected: #{@expected}
Actual: #{@actual}
Expected: #{expected}
Actual: #{actual}
Archive: #{fn}
To retry an incomplete download, remove the file above.
EOS
end
def to_s
super + advice.to_s
end
end
class ResourceMissingError < ArgumentError

View File

@ -237,7 +237,7 @@ class Pathname
def verify_checksum expected
raise ChecksumMissingError if expected.nil? or expected.empty?
actual = Checksum.new(expected.hash_type, send(expected.hash_type).downcase)
raise ChecksumMismatchError.new(expected, actual) unless expected == actual
raise ChecksumMismatchError.new(self, expected, actual) unless expected == actual
end
if '1.9' <= RUBY_VERSION

View File

@ -91,12 +91,6 @@ class Resource
opoo "Cannot verify integrity of #{fn.basename}"
puts "A checksum was not provided for this resource"
puts "For your reference the SHA1 is: #{fn.sha1}"
rescue ChecksumMismatchError => e
e.advice = <<-EOS.undent
Archive: #{fn}
(To retry an incomplete download, remove the file above.)
EOS
raise e
end
Checksum::TYPES.each do |cksum|

View File

@ -117,7 +117,7 @@ class ResourceTests < Test::Unit::TestCase
checksum = @resource.sha1(TEST_SHA1)
fn.expects(:verify_checksum).with(checksum).
raises(ChecksumMismatchError.new(checksum, Object.new))
raises(ChecksumMismatchError.new(fn, checksum, Object.new))
shutup do
assert_raises(ChecksumMismatchError) do