[ruby/ipaddr] Fix InvalidAddressError message

https://github.com/ruby/ipaddr/commit/c96dbadee3
This commit is contained in:
ishikawa999 2024-04-27 16:24:39 +09:00 committed by git
parent 9664191e19
commit ff6bd7fb4e
2 changed files with 14 additions and 2 deletions

View File

@ -721,8 +721,8 @@ class IPAddr
octets = addr.split('.')
end
octets.inject(0) { |i, s|
(n = s.to_i) < 256 or raise InvalidAddressError, "invalid address: #{@addr}"
(s != '0') && s.start_with?('0') and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous: #{@addr}"
(n = s.to_i) < 256 or raise InvalidAddressError, "invalid address: #{addr}"
(s != '0') && s.start_with?('0') and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous: #{addr}"
i << 8 | n
}
end

View File

@ -620,4 +620,16 @@ class TC_Operator < Test::Unit::TestCase
assert_equal(true, s.include?(a5))
assert_equal(true, s.include?(a6))
end
def test_raises_invalid_address_error_with_error_message
e = assert_raise(IPAddr::InvalidAddressError) do
IPAddr.new('192.168.0.1000')
end
assert_equal('invalid address: 192.168.0.1000', e.message)
e = assert_raise(IPAddr::InvalidAddressError) do
IPAddr.new('192.168.01.100')
end
assert_equal('zero-filled number in IPv4 address is ambiguous: 192.168.01.100', e.message)
end
end