mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
3 changed files with 30 additions and 3 deletions
|
@ -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>
|
||||
|
||||
* doc/syntax/calling_methods.rdoc: Fix documentation for "calling_methods"
|
||||
|
|
|
@ -1676,10 +1676,10 @@ class Resolv
|
|||
return false unless self.class == other.class
|
||||
s_ivars = self.instance_variables
|
||||
s_ivars.sort!
|
||||
s_ivars.delete "@ttl"
|
||||
s_ivars.delete :@ttl
|
||||
o_ivars = other.instance_variables
|
||||
o_ivars.sort!
|
||||
o_ivars.delete "@ttl"
|
||||
o_ivars.delete :@ttl
|
||||
return s_ivars == o_ivars &&
|
||||
s_ivars.collect {|name| self.instance_variable_get name} ==
|
||||
o_ivars.collect {|name| other.instance_variable_get name}
|
||||
|
@ -1692,7 +1692,7 @@ class Resolv
|
|||
def hash # :nodoc:
|
||||
h = 0
|
||||
vars = self.instance_variables
|
||||
vars.delete "@ttl"
|
||||
vars.delete :@ttl
|
||||
vars.each {|name|
|
||||
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…
Reference in a new issue