]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 72489 via svnmerge from
authorGregory P. Smith <greg@mad-scientist.com>
Fri, 8 May 2009 23:19:47 +0000 (23:19 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Fri, 8 May 2009 23:19:47 +0000 (23:19 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r72489 | gregory.p.smith | 2009-05-08 16:16:47 -0700 (Fri, 08 May 2009) | 3 lines

  Fix an off by one error on negative indexs to __getitem__
  http://code.google.com/p/ipaddr-py/issues/detail?id=15
........

Lib/ipaddr.py
Lib/test/test_ipaddr.py

index e0966c6774a76cba76d2e071f2cc403e692d5ad6..ef61f85e364ee385a8e913f9bf4baad3a6a8d22c 100644 (file)
@@ -209,6 +209,7 @@ class BaseIP(object):
                 raise IndexError
             return self._string_from_ip_int(self.network + n)
         else:
+            n += 1
             if self.broadcast + n < self.network:
                 raise IndexError
             return self._string_from_ip_int(self.broadcast + n)
index b0fda04cc3300639222b295a73b95d61642a520e..afa8da36de5a56ea3351917467ee025c70ee6a36 100755 (executable)
@@ -274,6 +274,17 @@ class IpaddrUnitTest(unittest.TestCase):
         self.assertEqual(self.ipv6[5],
                          '2001:658:22a:cafe::5')
 
+    def test_getitem(self):
+        # http://code.google.com/p/ipaddr-py/issues/detail?id=15
+        addr = ipaddr.IPv4('172.31.255.128/255.255.255.240')
+        self.assertEqual(28, addr.prefixlen)
+        addr_list = list(addr)
+        self.assertEqual('172.31.255.128', addr_list[0])
+        self.assertEqual('172.31.255.128', addr[0])
+        self.assertEqual('172.31.255.143', addr_list[-1])
+        self.assertEqual('172.31.255.143', addr[-1])
+        self.assertEqual(addr_list[-1], addr[-1])
+
     def test_equals(self):
         self.assertTrue(self.ipv4 == ipaddr.IPv4('1.2.3.4/24'))
         self.assertFalse(self.ipv4 == ipaddr.IPv4('1.2.3.4/23'))