1
0
Fork 0
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:
nobu 2015-02-17 02:47:19 +00:00
parent 23b9356a0e
commit 466bd05fda
3 changed files with 30 additions and 3 deletions

View file

@ -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"

View file

@ -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
}

View 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