mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
bpo-27683: Fix a regression for host() of ipaddress network objects (GH-6016)
The result of host() was not empty when the network is constructed by a tuple containing an integer mask and only 1 bit left for addresses.
This commit is contained in:
parent
5609b78392
commit
10b134a07c
4 changed files with 73 additions and 73 deletions
|
|
@ -1127,10 +1127,30 @@ class IpaddrUnitTest(unittest.TestCase):
|
|||
self.assertEqual(ipaddress.IPv4Address('1.2.3.1'), hosts[0])
|
||||
self.assertEqual(ipaddress.IPv4Address('1.2.3.254'), hosts[-1])
|
||||
|
||||
ipv6_network = ipaddress.IPv6Network('2001:658:22a:cafe::/120')
|
||||
hosts = list(ipv6_network.hosts())
|
||||
self.assertEqual(255, len(hosts))
|
||||
self.assertEqual(ipaddress.IPv6Address('2001:658:22a:cafe::1'), hosts[0])
|
||||
self.assertEqual(ipaddress.IPv6Address('2001:658:22a:cafe::ff'), hosts[-1])
|
||||
|
||||
# special case where only 1 bit is left for address
|
||||
self.assertEqual([ipaddress.IPv4Address('2.0.0.0'),
|
||||
ipaddress.IPv4Address('2.0.0.1')],
|
||||
list(ipaddress.ip_network('2.0.0.0/31').hosts()))
|
||||
addrs = [ipaddress.IPv4Address('2.0.0.0'),
|
||||
ipaddress.IPv4Address('2.0.0.1')]
|
||||
str_args = '2.0.0.0/31'
|
||||
tpl_args = ('2.0.0.0', 31)
|
||||
self.assertEqual(addrs, list(ipaddress.ip_network(str_args).hosts()))
|
||||
self.assertEqual(addrs, list(ipaddress.ip_network(tpl_args).hosts()))
|
||||
self.assertEqual(list(ipaddress.ip_network(str_args).hosts()),
|
||||
list(ipaddress.ip_network(tpl_args).hosts()))
|
||||
|
||||
addrs = [ipaddress.IPv6Address('2001:658:22a:cafe::'),
|
||||
ipaddress.IPv6Address('2001:658:22a:cafe::1')]
|
||||
str_args = '2001:658:22a:cafe::/127'
|
||||
tpl_args = ('2001:658:22a:cafe::', 127)
|
||||
self.assertEqual(addrs, list(ipaddress.ip_network(str_args).hosts()))
|
||||
self.assertEqual(addrs, list(ipaddress.ip_network(tpl_args).hosts()))
|
||||
self.assertEqual(list(ipaddress.ip_network(str_args).hosts()),
|
||||
list(ipaddress.ip_network(tpl_args).hosts()))
|
||||
|
||||
def testFancySubnetting(self):
|
||||
self.assertEqual(sorted(self.ipv4_network.subnets(prefixlen_diff=3)),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue