mirror of https://github.com/python/cpython
Fixes issue6169: it was possible for two ipaddr network addresses to compare
as both < and > than eachother.
This commit is contained in:
parent
25de0dd89b
commit
61e7fbf2c1
|
@ -10,7 +10,7 @@ and prefixes.
|
|||
|
||||
"""
|
||||
|
||||
__version__ = '1.1.0'
|
||||
__version__ = '1.1.1'
|
||||
|
||||
import struct
|
||||
|
||||
|
@ -204,17 +204,25 @@ class BaseIP(object):
|
|||
|
||||
def __lt__(self, other):
|
||||
try:
|
||||
return (self.version < other.version
|
||||
or self.ip < other.ip
|
||||
or self.netmask < other.netmask)
|
||||
if self.version != other.version:
|
||||
return self.version < other.version
|
||||
if self.ip != other.ip:
|
||||
return self.ip < other.ip
|
||||
if self.netmask != other.netmask:
|
||||
return self.netmask < other.netmask
|
||||
return False
|
||||
except AttributeError:
|
||||
return NotImplemented
|
||||
|
||||
def __gt__(self, other):
|
||||
try:
|
||||
return (self.version > other.version
|
||||
or self.ip > other.ip
|
||||
or self.netmask > other.netmask)
|
||||
if self.version != other.version:
|
||||
return self.version > other.version
|
||||
if self.ip != other.ip:
|
||||
return self.ip > other.ip
|
||||
if self.netmask != other.netmask:
|
||||
return self.netmask > other.netmask
|
||||
return False
|
||||
except AttributeError:
|
||||
return NotImplemented
|
||||
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
# Copyright 2007 Google Inc.
|
||||
# Licensed to PSF under a Contributor Agreement.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# See also: http://code.google.com/p/ipaddr-py/
|
||||
|
||||
"""Unittest for ipaddr module."""
|
||||
|
@ -373,6 +361,21 @@ class IpaddrUnitTest(unittest.TestCase):
|
|||
self.assertTrue(ipv6 > ipv4)
|
||||
self.assertTrue(ipv4 < ipv6)
|
||||
|
||||
# Regression test for issue6169 (ipaddr-py issue 19)
|
||||
ip1 = ipaddr.IP('10.1.2.128/25')
|
||||
self.assertFalse(ip1 < ip1)
|
||||
self.assertFalse(ip1 > ip1)
|
||||
ip2 = ipaddr.IP('10.1.3.0/24')
|
||||
self.assertTrue(ip1 < ip2)
|
||||
self.assertFalse(ip2 < ip1)
|
||||
self.assertFalse(ip1 > ip2)
|
||||
self.assertTrue(ip2 > ip1)
|
||||
ip3 = ipaddr.IP('10.1.3.0/25')
|
||||
self.assertTrue(ip2 < ip3)
|
||||
self.assertFalse(ip3 < ip2)
|
||||
self.assertFalse(ip2 > ip3)
|
||||
self.assertTrue(ip3 > ip2)
|
||||
|
||||
def test_embedded_ipv4(self):
|
||||
ipv4_string = '192.168.0.1'
|
||||
ipv4 = ipaddr.IPv4(ipv4_string)
|
||||
|
|
Loading…
Reference in New Issue