Created
July 2, 2012 11:35
-
-
Save sunaot/3032789 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'test/unit' | |
class Test < Test::Unit::TestCase | |
def test_resolv_error | |
force_resolv_error do | |
# do something | |
end | |
end | |
private | |
def force_resolv_error &block | |
original_resolver = Resolv::DefaultResolver | |
replace_resolver ErrorResolv.new | |
begin | |
block.call | |
ensure | |
replace_resolver original_resolver | |
end | |
end | |
def replace_resolver new_resolver | |
current = $VERBOSE | |
$VERBOSE = nil # to ignore const redefined warning | |
Resolv.const_set(:DefaultResolver, new_resolver) | |
$VERBOSE = current | |
end | |
end | |
class ErrorResolv | |
PublicAPIs = [:getaddresses, :getaddress, :each_address, :getname, :getnames, :each_name] | |
def raise_error *args | |
raise Resolv::ResolvError | |
end | |
PublicAPIs.each {|method| alias_method method, :raise_error } | |
private :raise_error | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment