mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-11-27 00:03:01 -05:00
Merge branch 'plugin-no-method-error' into 'master'
Fix error message when options method itself raises NoMethodError See merge request os85/httpx!322
This commit is contained in:
commit
0633daaf8e
@ -342,12 +342,11 @@ module HTTPX
|
||||
defaults.each do |k, v|
|
||||
next if v.nil?
|
||||
|
||||
begin
|
||||
value = __send__(:"option_#{k}", v)
|
||||
instance_variable_set(:"@#{k}", value)
|
||||
rescue NoMethodError
|
||||
raise Error, "unknown option: #{k}"
|
||||
end
|
||||
option_method_name = :"option_#{k}"
|
||||
raise Error, "unknown option: #{k}" unless respond_to?(option_method_name)
|
||||
|
||||
value = __send__(option_method_name, v)
|
||||
instance_variable_set(:"@#{k}", value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -10,6 +10,18 @@ class OptionsTest < Minitest::Test
|
||||
assert ex.message == "unknown option: foo", ex.message
|
||||
end
|
||||
|
||||
def test_options_no_method_error_during_validation
|
||||
custom_opt_class = Class.new(Options) do
|
||||
def option_foo(value)
|
||||
raise TypeError, ":foo must be a Hash" unless value.is_a(Hash)
|
||||
|
||||
value
|
||||
end
|
||||
end
|
||||
ex = assert_raises(NoMethodError) { custom_opt_class.new(foo: "bar") }
|
||||
assert_match("undefined method `is_a'", ex.message)
|
||||
end
|
||||
|
||||
def test_options_body
|
||||
opt1 = Options.new
|
||||
assert opt1.body.nil?, "body shouldn't be set by default"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user