[svn] commit: r3233 - in /branches/trac353/src/lib/python/isc/net: addr.py parse.py tests/addr_test.py

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Oct 15 16:00:52 UTC 2010


Author: vorner
Date: Fri Oct 15 16:00:52 2010
New Revision: 3233

Log:
Be more explicit about what is raised

And also raise something "nicer"

Modified:
    branches/trac353/src/lib/python/isc/net/addr.py
    branches/trac353/src/lib/python/isc/net/parse.py
    branches/trac353/src/lib/python/isc/net/tests/addr_test.py

Modified: branches/trac353/src/lib/python/isc/net/addr.py
==============================================================================
--- branches/trac353/src/lib/python/isc/net/addr.py (original)
+++ branches/trac353/src/lib/python/isc/net/addr.py Fri Oct 15 16:00:52 2010
@@ -16,12 +16,20 @@
 """Module where address representations live."""
 import socket
 
+class InvalidAddress(ValueError):
+    """Exception for invalid addresses."""
+    pass
+
 class IPAddr:
     """Stores an IPv4 or IPv6 address."""
     family = None
     addr = None
 
     def __init__(self, addr):
+        """
+        Creates the address object from a string representation. It raises
+        an InvalidAddr exception if the provided string isn't valid address.
+        """
         try:
             a = socket.inet_pton(socket.AF_INET, addr)
             self.family = socket.AF_INET
@@ -35,8 +43,8 @@
             self.family = socket.AF_INET6
             self.addr = a
             return
-        except Exception as e:
-            raise e
+        except socket.error as e:
+            raise InvalidAddress(str(e))
 
     def __str__(self):
         return socket.inet_ntop(self.family, self.addr)

Modified: branches/trac353/src/lib/python/isc/net/parse.py
==============================================================================
--- branches/trac353/src/lib/python/isc/net/parse.py (original)
+++ branches/trac353/src/lib/python/isc/net/parse.py Fri Oct 15 16:00:52 2010
@@ -17,7 +17,7 @@
 Checking and parsing of ports and IP addresses.
 """
 
-from isc.net.addr import IPAddr
+from isc.net.addr import IPAddr, InvalidAddress
 import socket
 
 def port_parse(port):
@@ -43,6 +43,6 @@
     """
     try:
         return IPAddr(addr)
-    except socket.error:
+    except InvalidAddress:
         raise ValueError('Value ' + addr +
             ' is not valid IPv4 or IPv6 address')

Modified: branches/trac353/src/lib/python/isc/net/tests/addr_test.py
==============================================================================
--- branches/trac353/src/lib/python/isc/net/tests/addr_test.py (original)
+++ branches/trac353/src/lib/python/isc/net/tests/addr_test.py Fri Oct 15 16:00:52 2010
@@ -16,7 +16,7 @@
 """Tests for the isc.net.addr module."""
 import unittest
 import socket
-from isc.net.addr import IPAddr
+from isc.net.addr import IPAddr, InvalidAddress
 
 class TestIPAddr(unittest.TestCase):
     """Test for the IPAddr class."""
@@ -34,15 +34,15 @@
 
     def test_badaddr(self):
         """Test if we raise on wrong address."""
-        self.assertRaises(socket.error, IPAddr, 'foobar')
-        self.assertRaises(socket.error, IPAddr, 'foo::bar')
-        self.assertRaises(socket.error, IPAddr, '123')
-        self.assertRaises(socket.error, IPAddr, '123.456.789.0')
-        self.assertRaises(socket.error, IPAddr, '127/8')
-        self.assertRaises(socket.error, IPAddr, '0/0')
-        self.assertRaises(socket.error, IPAddr, '1.2.3.4/32')
-        self.assertRaises(socket.error, IPAddr, '0')
-        self.assertRaises(socket.error, IPAddr, '')
+        self.assertRaises(InvalidAddress, IPAddr, 'foobar')
+        self.assertRaises(InvalidAddress, IPAddr, 'foo::bar')
+        self.assertRaises(InvalidAddress, IPAddr, '123')
+        self.assertRaises(InvalidAddress, IPAddr, '123.456.789.0')
+        self.assertRaises(InvalidAddress, IPAddr, '127/8')
+        self.assertRaises(InvalidAddress, IPAddr, '0/0')
+        self.assertRaises(InvalidAddress, IPAddr, '1.2.3.4/32')
+        self.assertRaises(InvalidAddress, IPAddr, '0')
+        self.assertRaises(InvalidAddress, IPAddr, '')
 
 if __name__ == '__main__':
     unittest.main()




More information about the bind10-changes mailing list