[pypy-svn] r18546 - in pypy/dist/pypy/module/_socket: . test
afa at codespeak.net
afa at codespeak.net
Fri Oct 14 16:12:48 CEST 2005
Author: afa
Date: Fri Oct 14 16:12:46 2005
New Revision: 18546
Modified:
pypy/dist/pypy/module/_socket/interp_socket.py
pypy/dist/pypy/module/_socket/test/test_socket2.py
Log:
(valentino, afa): more functions on socket
need to test socket.fromfd
Modified: pypy/dist/pypy/module/_socket/interp_socket.py
==============================================================================
--- pypy/dist/pypy/module/_socket/interp_socket.py (original)
+++ pypy/dist/pypy/module/_socket/interp_socket.py Fri Oct 14 16:12:46 2005
@@ -37,7 +37,7 @@
return space.wrap(socket.gethostbyaddr(ip_num))
gethostbyaddr.unwrap_spec = [ObjSpace, str]
-def getservbyname(space, name, w_proto = NoneNotWrapped):
+def getservbyname(space, name, w_proto=NoneNotWrapped):
"""getservbyname(servicename[, protocolname]) -> integer
Return a port number from a service name and protocol name.
@@ -50,12 +50,40 @@
return space.wrap(socket.getservbyname(name, space.str_w(w_proto)))
getservbyname.unwrap_spec = [ObjSpace, str, W_Root]
-def getservbyport(space, port):
+def getservbyport(space, port, w_proto=NoneNotWrapped):
"""getservbyport(port[, protocolname]) -> string
Return the service name from a port number and protocol name.
The optional protocol name, if given, should be 'tcp' or 'udp',
otherwise any protocol will match.
"""
+ if w_proto is None:
+ return space.wrap(socket.getservbyport(port))
+ else:
+ return space.wrap(socket.getservbyport(port, space.str_w(w_proto)))
+getservbyport.unwrap_spec = [ObjSpace, int, W_Root]
+
+def getprotobyname(space, name):
+ """getprotobyname(name) -> integer
+
+ Return the protocol number for the named protocol. (Rarely used.)
+ """
+ return space.wrap(socket.getprotobyname(name))
+getprotobyname.unwrap_spec = [ObjSpace, str]
+
+def fromfd(space, fd, family, type, w_proto=NoneNotWrapped):
+ """fromfd(fd, family, type[, proto]) -> socket object
+
+ Create a socket object from the given file descriptor.
+ The remaining arguments are the same as for socket().
+ """
+ if proto is None:
+ return space.wrap(socket.fromfd(fd, family, type))
+ else:
+ return space.wrap(socket.fromfd(fd, family, type, space.int_w(proto)))
+fromfd.unwrap_spec = [ObjSpace, int, int, int, int]
-# getservbyport getprotobyname
+# fromfd socketpair
+# ntohs ntohl htons htonl inet_aton inet_ntoa inet_pton inet_ntop
+# getaddrinfo getnameinfo
+# getdefaulttimeout setdefaulttimeout
Modified: pypy/dist/pypy/module/_socket/test/test_socket2.py
==============================================================================
--- pypy/dist/pypy/module/_socket/test/test_socket2.py (original)
+++ pypy/dist/pypy/module/_socket/test/test_socket2.py Fri Oct 14 16:12:46 2005
@@ -39,11 +39,41 @@
# 2 args version
port = space.appexec([w_socket, space.wrap(name)],
"(_socket, name): return _socket.getservbyname(name, 'tcp')")
+ assert space.unwrap(port) == 25
# 1 arg version
if sys.version_info < (2, 4):
py.test.skip("getservbyname second argument is not optional before python 2.4")
port = space.appexec([w_socket, space.wrap(name)],
"(_socket, name): return _socket.getservbyname(name)")
+ assert space.unwrap(port) == 25
+
+def test_getservbyport():
+ if sys.version_info < (2, 4):
+ py.test.skip("getservbyport does not exist before python 2.4")
+ port = 25
+ # 2 args version
+ name = space.appexec([w_socket, space.wrap(port)],
+ "(_socket, port): return _socket.getservbyport(port, 'tcp')")
+ assert space.unwrap(name) == "smtp"
+ name = space.appexec([w_socket, space.wrap(port)],
+ """(_socket, port):
+ try:
+ return _socket.getservbyport(port, 42)
+ except TypeError:
+ return 'OK'
+ """)
+ assert space.unwrap(name) == 'OK'
+ # 1 arg version
+ name = space.appexec([w_socket, space.wrap(port)],
+ "(_socket, port): return _socket.getservbyport(port)")
+ assert space.unwrap(name) == "smtp"
+
+def test_getprotobyname():
+ name = "tcp"
+ num = space.appexec([w_socket, space.wrap(name)],
+ "(_socket, name): return _socket.getprotobyname(name)")
+ assert space.unwrap(num) == socket.IPPROTO_TCP
+
def test_has_ipv6():
res = space.appexec([w_socket], "(_socket): return _socket.has_ipv6")
More information about the Pypy-commit
mailing list