Bug #14612 » resolv-ipv6-to_s.patch
lib/resolv.rb | ||
---|---|---|
require 'socket'
|
||
require 'timeout'
|
||
require 'io/wait'
|
||
require 'ipaddr'
|
||
begin
|
||
require 'securerandom'
|
||
... | ... | |
attr_reader :address
|
||
def to_s # :nodoc:
|
||
address = sprintf("%X:%X:%X:%X:%X:%X:%X:%X", *@address.unpack("nnnnnnnn"))
|
||
unless address.sub!(/(^|:)0(:0)+(:|$)/, '::')
|
||
address.sub!(/(^|:)0(:|$)/, '::')
|
||
end
|
||
return address
|
||
IPAddr.new(sprintf("%x:%x:%x:%x:%x:%x:%x:%x", *@address.unpack("nnnnnnnn"))).to_s
|
||
end
|
||
def inspect # :nodoc:
|
test/resolv/test_dns.rb | ||
---|---|---|
assert_instance_of Resolv::IPv6, Resolv::IPv6.create('::1:127.0.0.1'), ref
|
||
end
|
||
def test_ipv6_to_s
|
||
test_cases = [
|
||
["2001::abcd:abcd:abcd", "2001::ABcd:abcd:ABCD"],
|
||
["2001:db8::1", "2001:db8::0:1"],
|
||
["::", "0:0:0:0:0:0:0:0"],
|
||
["2001::", "2001::0"],
|
||
["2001:db8:0:1:1:1:1:1", "2001:db8:0:1:1:1:1:1"],
|
||
["1:0:0:1::1", "1:0:0:1:0:0:0:1"],
|
||
["1::1:0:0:1", "1:0:0:0:1:0:0:1"],
|
||
]
|
||
test_cases.each do |expected, ipv6|
|
||
assert_equal expected, Resolv::IPv6.create(ipv6).to_s
|
||
end
|
||
end
|
||
def test_ipv6_should_be_16
|
||
ref = '[rubygems:1626]'
|
||