Skip to content

Commit b92ef74

Browse files
committed
Follow-up fix for InvalidAddressError messages
1 parent 93ef50b commit b92ef74

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

lib/ipaddr.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ def _ipv4_compat? # :nodoc:
368368
# into an IPv4-mapped IPv6 address.
369369
def ipv4_mapped
370370
if !ipv4?
371-
raise InvalidAddressError, "not an IPv4 address: #{@addr}"
371+
raise InvalidAddressError, "not an IPv4 address: #{to_s}"
372372
end
373373
clone = self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
374374
clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
@@ -380,7 +380,7 @@ def ipv4_mapped
380380
def ipv4_compat
381381
warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
382382
if !ipv4?
383-
raise InvalidAddressError, "not an IPv4 address: #{@addr}"
383+
raise InvalidAddressError, "not an IPv4 address: #{to_s}"
384384
end
385385
clone = self.clone.set(@addr, Socket::AF_INET6)
386386
clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
@@ -413,15 +413,15 @@ def reverse
413413
# Returns a string for DNS reverse lookup compatible with RFC3172.
414414
def ip6_arpa
415415
if !ipv6?
416-
raise InvalidAddressError, "not an IPv6 address: #{@addr}"
416+
raise InvalidAddressError, "not an IPv6 address: #{to_s}"
417417
end
418418
return _reverse + ".ip6.arpa"
419419
end
420420

421421
# Returns a string for DNS reverse lookup compatible with RFC1886.
422422
def ip6_int
423423
if !ipv6?
424-
raise InvalidAddressError, "not an IPv6 address: #{@addr}"
424+
raise InvalidAddressError, "not an IPv6 address: #{to_s}"
425425
end
426426
return _reverse + ".ip6.int"
427427
end
@@ -743,19 +743,19 @@ def in6_addr(left)
743743
right = ''
744744
when RE_IPV6ADDRLIKE_COMPRESSED
745745
if $4
746-
left.count(':') <= 6 or raise InvalidAddressError, "invalid address: #{@addr}"
746+
left.count(':') <= 6 or raise InvalidAddressError, "invalid address: #{left}"
747747
addr = in_addr($~[4,4])
748748
left = $1
749749
right = $3 + '0:0'
750750
else
751751
left.count(':') <= ($1.empty? || $2.empty? ? 8 : 7) or
752-
raise InvalidAddressError, "invalid address: #{@addr}"
752+
raise InvalidAddressError, "invalid address: #{left}"
753753
left = $1
754754
right = $2
755755
addr = 0
756756
end
757757
else
758-
raise InvalidAddressError, "invalid address: #{@addr}"
758+
raise InvalidAddressError, "invalid address: #{left}"
759759
end
760760
l = left.split(':')
761761
r = right.split(':')

test/test_ipaddr.rb

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,15 @@ def test_ipv4_compat
207207
assert_equal(112, b.prefix)
208208
end
209209

210+
def test_ipv4_compat_with_error_message
211+
e = assert_raise(IPAddr::InvalidAddressError) do
212+
assert_warning(/obsolete/) {
213+
IPAddr.new('2001:db8::').ipv4_compat
214+
}
215+
end
216+
assert_equal('not an IPv4 address: 2001:db8::', e.message)
217+
end
218+
210219
def test_ipv4_mapped
211220
a = IPAddr.new("::ffff:192.168.1.2")
212221
assert_equal("::ffff:192.168.1.2", a.to_s)
@@ -224,23 +233,32 @@ def test_ipv4_mapped
224233
assert_equal(Socket::AF_INET6, b.family)
225234
end
226235

236+
def test_ipv4_mapped_with_error_message
237+
e = assert_raise(IPAddr::InvalidAddressError) do
238+
IPAddr.new('2001:db8::').ipv4_mapped
239+
end
240+
assert_equal('not an IPv4 address: 2001:db8::', e.message)
241+
end
242+
227243
def test_reverse
228244
assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").reverse)
229245
assert_equal("1.2.168.192.in-addr.arpa", IPAddr.new("192.168.2.1").reverse)
230246
end
231247

232248
def test_ip6_arpa
233249
assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").ip6_arpa)
234-
assert_raise(IPAddr::InvalidAddressError) {
250+
e = assert_raise(IPAddr::InvalidAddressError) {
235251
IPAddr.new("192.168.2.1").ip6_arpa
236252
}
253+
assert_equal('not an IPv6 address: 192.168.2.1', e.message)
237254
end
238255

239256
def test_ip6_int
240257
assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.int", IPAddr.new("3ffe:505:2::f").ip6_int)
241-
assert_raise(IPAddr::InvalidAddressError) {
258+
e = assert_raise(IPAddr::InvalidAddressError) {
242259
IPAddr.new("192.168.2.1").ip6_int
243260
}
261+
assert_equal('not an IPv6 address: 192.168.2.1', e.message)
244262
end
245263

246264
def test_prefix_writer
@@ -631,5 +649,10 @@ def test_raises_invalid_address_error_with_error_message
631649
IPAddr.new('192.168.01.100')
632650
end
633651
assert_equal('zero-filled number in IPv4 address is ambiguous: 192.168.01.100', e.message)
652+
653+
e = assert_raise(IPAddr::InvalidAddressError) do
654+
IPAddr.new('INVALID')
655+
end
656+
assert_equal('invalid address: INVALID', e.message)
634657
end
635658
end

0 commit comments

Comments
 (0)