resolv.rb: fix equality
* lib/resolv.rb (Resolv::DNS::Resource#==, #hash): elements returned by Kernel#instance_variables are Symbols now. [ruby-core:68128] [Bug #10857] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
23b9356a0e
commit
466bd05fda
@ -1,3 +1,9 @@
|
|||||||
|
Tue Feb 17 11:47:17 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/resolv.rb (Resolv::DNS::Resource#==, #hash): elements
|
||||||
|
returned by Kernel#instance_variables are Symbols now.
|
||||||
|
[ruby-core:68128] [Bug #10857]
|
||||||
|
|
||||||
Tue Feb 17 10:59:10 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
Tue Feb 17 10:59:10 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
||||||
|
|
||||||
* doc/syntax/calling_methods.rdoc: Fix documentation for "calling_methods"
|
* doc/syntax/calling_methods.rdoc: Fix documentation for "calling_methods"
|
||||||
|
@ -1676,10 +1676,10 @@ class Resolv
|
|||||||
return false unless self.class == other.class
|
return false unless self.class == other.class
|
||||||
s_ivars = self.instance_variables
|
s_ivars = self.instance_variables
|
||||||
s_ivars.sort!
|
s_ivars.sort!
|
||||||
s_ivars.delete "@ttl"
|
s_ivars.delete :@ttl
|
||||||
o_ivars = other.instance_variables
|
o_ivars = other.instance_variables
|
||||||
o_ivars.sort!
|
o_ivars.sort!
|
||||||
o_ivars.delete "@ttl"
|
o_ivars.delete :@ttl
|
||||||
return s_ivars == o_ivars &&
|
return s_ivars == o_ivars &&
|
||||||
s_ivars.collect {|name| self.instance_variable_get name} ==
|
s_ivars.collect {|name| self.instance_variable_get name} ==
|
||||||
o_ivars.collect {|name| other.instance_variable_get name}
|
o_ivars.collect {|name| other.instance_variable_get name}
|
||||||
@ -1692,7 +1692,7 @@ class Resolv
|
|||||||
def hash # :nodoc:
|
def hash # :nodoc:
|
||||||
h = 0
|
h = 0
|
||||||
vars = self.instance_variables
|
vars = self.instance_variables
|
||||||
vars.delete "@ttl"
|
vars.delete :@ttl
|
||||||
vars.each {|name|
|
vars.each {|name|
|
||||||
h ^= self.instance_variable_get(name).hash
|
h ^= self.instance_variable_get(name).hash
|
||||||
}
|
}
|
||||||
|
21
test/resolv/test_resource.rb
Normal file
21
test/resolv/test_resource.rb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
require 'test/unit'
|
||||||
|
require 'resolv'
|
||||||
|
|
||||||
|
class TestResolvResource < Test::Unit::TestCase
|
||||||
|
def setup
|
||||||
|
address = "192.168.0.1"
|
||||||
|
@name1 = Resolv::DNS::Resource::IN::A.new(address)
|
||||||
|
@name1.instance_variable_set(:@ttl, 100)
|
||||||
|
@name2 = Resolv::DNS::Resource::IN::A.new(address)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_equality
|
||||||
|
bug10857 = '[ruby-core:68128] [Bug #10857]'
|
||||||
|
assert_equal(@name1, @name2, bug10857)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_hash
|
||||||
|
bug10857 = '[ruby-core:68128] [Bug #10857]'
|
||||||
|
assert_equal(@name1.hash, @name2.hash, bug10857)
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user