[Checkins] SVN: zope.app.wsgi/trunk/ Python2.7 compatibility for xmlrpc. Transplant of zope.app.testing r116141.

Jan-Jaap Driessen jdriessen at thehealthagency.com
Thu Oct 14 09:02:53 EDT 2010


Log message for revision 117547:
  Python2.7 compatibility for xmlrpc. Transplant of zope.app.testing r116141.
  
  

Changed:
  U   zope.app.wsgi/trunk/CHANGES.txt
  U   zope.app.wsgi/trunk/src/zope/app/wsgi/testlayer.py

-=-
Modified: zope.app.wsgi/trunk/CHANGES.txt
===================================================================
--- zope.app.wsgi/trunk/CHANGES.txt	2010-10-14 13:01:22 UTC (rev 117546)
+++ zope.app.wsgi/trunk/CHANGES.txt	2010-10-14 13:02:53 UTC (rev 117547)
@@ -6,7 +6,7 @@
 3.9.3 (unreleased)
 ------------------
 
-- TBD
+- Python2.7 compatibility for xmlrpc. Transplant of zope.app.testing r116141.
 
 
 3.9.2 (2010-05-23)

Modified: zope.app.wsgi/trunk/src/zope/app/wsgi/testlayer.py
===================================================================
--- zope.app.wsgi/trunk/src/zope/app/wsgi/testlayer.py	2010-10-14 13:01:22 UTC (rev 117546)
+++ zope.app.wsgi/trunk/src/zope/app/wsgi/testlayer.py	2010-10-14 13:02:53 UTC (rev 117547)
@@ -14,6 +14,7 @@
 from StringIO import StringIO
 import re
 import base64
+import httplib
 import xmlrpclib
 
 from transaction import commit
@@ -220,9 +221,19 @@
     result = socket.makefile()
     return FakeResponse(result.getvalue())
 
+
+class FakeSocket(object):
+
+    def __init__(self, data):
+        self.data = data
+
+    def makefile(self, mode, bufsize=None):
+        return StringIO(self.data)
+
+
 class XMLRPCTestTransport(xmlrpclib.Transport):
     """xmlrpclib transport that delegates to http().
-    
+
     It can be used like a normal transport, including support for basic
     authentication.
     """
@@ -256,8 +267,9 @@
                 headers
                 )
 
-        return self._parse_response(
-            StringIO(response.getBody()), sock=None)
+        res = httplib.HTTPResponse(FakeSocket(response.getBody()))
+        res.begin()
+        return self.parse_response(res)
 
 
 def XMLRPCServerProxy(uri, transport=None, encoding=None,



More information about the checkins mailing list