Skip to content

Commit

Permalink
Fix xmlrpc unittest. While it now passes on Linux, it still fails
Browse files Browse the repository at this point in the history
on FreeBSD due to the difference of socket blocking mode inheritance.
  • Loading branch information
hyeshik committed Aug 19, 2007
1 parent faa54a3 commit 9604286
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 25 deletions.
28 changes: 5 additions & 23 deletions Lib/SimpleXMLRPCServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,19 +141,6 @@ def list_public_methods(obj):
if not member.startswith('_') and
hasattr(getattr(obj, member), '__call__')]

def remove_duplicates(lst):
"""remove_duplicates([2,2,2,1,3,3]) => [3,1,2]
Returns a copy of a list without duplicates. Every list
item must be hashable and the order of the items in the
resulting list is not defined.
"""
u = {}
for x in lst:
u[x] = 1

return u.keys()

class SimpleXMLRPCDispatcher:
"""Mix-in class that dispatches XML-RPC requests.
Expand Down Expand Up @@ -276,23 +263,18 @@ def system_listMethods(self):
Returns a list of the methods supported by the server."""

methods = self.funcs.keys()
methods = set(self.funcs.keys())
if self.instance is not None:
# Instance can implement _listMethod to return a list of
# methods
if hasattr(self.instance, '_listMethods'):
methods = remove_duplicates(
methods + self.instance._listMethods()
)
methods |= set(self.instance._listMethods())
# if the instance has a _dispatch method then we
# don't have enough information to provide a list
# of methods
elif not hasattr(self.instance, '_dispatch'):
methods = remove_duplicates(
methods + list_public_methods(self.instance)
)
methods.sort()
return methods
methods |= set(list_public_methods(self.instance))
return sorted(methods)

def system_methodSignature(self, method_name):
"""system.methodSignature('add') => [double, int, int]
Expand Down Expand Up @@ -459,7 +441,7 @@ def do_POST(self):
chunk_size = min(size_remaining, max_chunk_size)
L.append(self.rfile.read(chunk_size))
size_remaining -= len(L[-1])
data = ''.join(L)
data = b''.join(L)

# In previous versions of SimpleXMLRPCServer, _dispatch
# could be overridden in this class, instead of in
Expand Down
4 changes: 2 additions & 2 deletions Lib/xmlrpclib.py
Original file line number Diff line number Diff line change
Expand Up @@ -1117,8 +1117,8 @@ def request(self, host, handler, request_body, verbose=0):
if resp.status != 200:
raise ProtocolError(
host + handler,
errcode, errmsg,
headers
resp.status, resp.reason,
resp.getheaders()
)

self.verbose = verbose
Expand Down

0 comments on commit 9604286

Please sign in to comment.