Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1955

Show
Ignore:
Timestamp:
04/26/08 20:19:53
Author:
fumanchu
Message:

Test and fix for #791 (cherrypy.lib.xmlrpc.respond cannot marshal xmlrpclib.Fault objects).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/lib/xmlrpc.py

    r1638 r1955  
    3737def respond(body, encoding='utf-8', allow_none=0): 
    3838    import xmlrpclib 
    39     _set_response(xmlrpclib.dumps((body,), methodresponse=1, 
     39    if not isinstance(body, xmlrpclib.Fault): 
     40        body = (body,) 
     41    _set_response(xmlrpclib.dumps(body, methodresponse=1, 
    4042                                  encoding=encoding, 
    4143                                  allow_none=allow_none)) 
  • trunk/cherrypy/test/test_xmlrpc.py

    r1666 r1955  
    6060            return num * 2 
    6161        test_argument_passing.exposed = True 
     62 
     63        def test_returning_Fault(self): 
     64            return xmlrpclib.Fault(1, "custom Fault response") 
     65        test_returning_Fault.exposed = True 
    6266 
    6367    root = Root() 
     
    154158        else: 
    155159            self.fail("Expected xmlrpclib.Fault") 
    156  
     160         
    157161        # http://www.cherrypy.org/ticket/533 
    158162        # if a method is not found, an xmlrpclib.Fault should be raised 
     
    164168        else: 
    165169            self.fail("Expected xmlrpclib.Fault") 
     170         
     171        # Test returning a Fault from the page handler. 
     172        try: 
     173            proxy.test_returning_Fault() 
     174        except Exception, x: 
     175            self.assertEqual(x.__class__, xmlrpclib.Fault) 
     176            self.assertEqual(x.faultString, ("custom Fault response")) 
     177        else: 
     178            self.fail("Expected xmlrpclib.Fault") 
    166179 
    167180 

Hosted by WebFaction

Log in as guest/cpguest to create tickets