diff options
author | Senthil Kumaran <orsenthil@gmail.com> | 2009-04-01 20:26:33 (GMT) |
---|---|---|
committer | Senthil Kumaran <orsenthil@gmail.com> | 2009-04-01 20:26:33 (GMT) |
commit | 20d114cad2ee622eda56568be65cd703077f43bd (patch) | |
tree | 934b2bd7ecc0ec060fdde8041c4c25e9d1f726c9 /Lib | |
parent | 2ecd3c36b584692f46cddf209f7c09edddd21673 (diff) | |
download | cpython-20d114cad2ee622eda56568be65cd703077f43bd.zip cpython-20d114cad2ee622eda56568be65cd703077f43bd.tar.gz cpython-20d114cad2ee622eda56568be65cd703077f43bd.tar.bz2 |
Fix for issue5040. Adding test for Content-Length
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/SimpleXMLRPCServer.py | 2 | ||||
-rw-r--r-- | Lib/test/test_xmlrpc.py | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py index b304e45..e9bda9a 100644 --- a/Lib/SimpleXMLRPCServer.py +++ b/Lib/SimpleXMLRPCServer.py @@ -580,7 +580,7 @@ class CGIXMLRPCRequestHandler(SimpleXMLRPCDispatcher): 'explain' : explain } print 'Status: %d %s' % (code, message) - print 'Content-Type: text/html' + print 'Content-Type: %s' % BaseHTTPServer.DEFAULT_ERROR_CONTENT_TYPE print 'Content-Length: %d' % len(response) print sys.stdout.write(response) diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py index 4f057c7..61c92ef 100644 --- a/Lib/test/test_xmlrpc.py +++ b/Lib/test/test_xmlrpc.py @@ -11,6 +11,7 @@ import httplib import socket import StringIO import os +import re from test import test_support try: @@ -385,6 +386,21 @@ class SimpleServerTestCase(unittest.TestCase): # protocol error; provide additional information in test output self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + def test_nonascii(self): + start_string = 'P\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}t' + end_string = 'h\N{LATIN SMALL LETTER O WITH HORN}n' + + try: + p = xmlrpclib.ServerProxy(URL) + self.assertEqual(p.add(start_string, end_string), + start_string + end_string) + except (xmlrpclib.ProtocolError, socket.error) as e: + # ignore failures due to non-blocking socket unavailable errors. + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + + # [ch] The test 404 is causing lots of false alarms. def XXXtest_404(self): # send POST with httplib, it should return 404 header and @@ -646,6 +662,18 @@ class CGIHandlerTestCase(unittest.TestCase): # start with 44th char so as not to get http header, we just need only xml self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, handle[44:]) + # Also test the content-length returned by handle_request + # Using the same test method inorder to avoid all the datapassing + # boilerplate code. + # Test for bug: http://bugs.python.org/issue5040 + + content = handle[handle.find("<?xml"):] + + self.assertEquals( + int(re.search('Content-Length: (\d+)', handle).group(1)), + len(content)) + + os.remove("xmldata.txt") os.remove(test_support.TESTFN) |