From: <am...@us...> - 2011-02-11 14:11:32
|
Revision: 7196 http://jython.svn.sourceforge.net/jython/?rev=7196&view=rev Author: amak Date: 2011-02-11 14:11:26 +0000 (Fri, 11 Feb 2011) Log Message: ----------- Adding repr methods to the internal address tuple types, so that they are more user friendly. Finalizes http://bugs.jython.org/issue1697 Modified Paths: -------------- trunk/jython/Lib/socket.py trunk/jython/Lib/test/test_socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2011-02-08 01:16:53 UTC (rev 7195) +++ trunk/jython/Lib/socket.py 2011-02-11 14:11:26 UTC (rev 7196) @@ -591,11 +591,8 @@ assert protocol == IPPROTO_UDP, "Only IPPROTO_UDP supported on SOCK_DGRAM sockets" return _udpsocket() -class _ip_address_t: +class _ip_address_t: pass - def __str__(self): - return "('%s', %d)" % (self.sockaddr, self.port) - class _ipv4_address_t(_ip_address_t): def __init__(self, sockaddr, port, jaddress): @@ -614,6 +611,11 @@ def __len__(self): return 2 + def __str__(self): + return "('%s', %d)" % (self.sockaddr, self.port) + + __repr__ = __str__ + class _ipv6_address_t(_ip_address_t): def __init__(self, sockaddr, port, jaddress): @@ -636,6 +638,11 @@ def __len__(self): return 4 + def __str__(self): + return "('%s', %d, 0, %d)" % (self.sockaddr, self.port, self.jaddress.scopeId) + + __repr__ = __str__ + def _get_jsockaddr(address_object, for_udp=False): if address_object is None: return java.net.InetSocketAddress(0) # Let the system pick an ephemeral port Modified: trunk/jython/Lib/test/test_socket.py =================================================================== --- trunk/jython/Lib/test/test_socket.py 2011-02-08 01:16:53 UTC (rev 7195) +++ trunk/jython/Lib/test/test_socket.py 2011-02-11 14:11:26 UTC (rev 7196) @@ -1508,6 +1508,7 @@ self.failUnlessEqual(ipv4_address_tuple[1], 80) self.failUnlessRaises(IndexError, lambda: ipv4_address_tuple[2]) self.failUnlessEqual(str(ipv4_address_tuple), "('127.0.0.1', 80)") + self.failUnlessEqual(repr(ipv4_address_tuple), "('127.0.0.1', 80)") ipv6_address_tuple = socket.getaddrinfo("localhost", 80, socket.AF_INET6, socket.SOCK_STREAM, 0, 0)[0][4] self.failUnless (ipv6_address_tuple[0] in ["::1", "0:0:0:0:0:0:0:1"]) @@ -1519,7 +1520,10 @@ except IndexError: self.fail("Failed to retrieve third element of ipv6 4-tuple") self.failUnlessRaises(IndexError, lambda: ipv6_address_tuple[4]) - self.failUnless(str(ipv6_address_tuple) in ["('::1', 80)", "('0:0:0:0:0:0:0:1', 80)"]) + # These str/repr tests may fail on some systems: the scope element of the tuple may be non-zero + # In this case, we'll have to change the test to use .startswith() or .split() to exclude the scope element + self.failUnless(str(ipv6_address_tuple) in ["('::1', 80, 0, 0)", "('0:0:0:0:0:0:0:1', 80, 0, 0)"]) + self.failUnless(repr(ipv6_address_tuple) in ["('::1', 80, 0, 0)", "('0:0:0:0:0:0:0:1', 80, 0, 0)"]) class TestJython_get_jsockaddr(unittest.TestCase): "These tests are specific to jython: they test a key internal routine" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |