summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSenthil Kumaran <orsenthil@gmail.com>2009-04-01 20:26:33 (GMT)
committerSenthil Kumaran <orsenthil@gmail.com>2009-04-01 20:26:33 (GMT)
commit20d114cad2ee622eda56568be65cd703077f43bd (patch)
tree934b2bd7ecc0ec060fdde8041c4c25e9d1f726c9 /Lib
parent2ecd3c36b584692f46cddf209f7c09edddd21673 (diff)
downloadcpython-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.py2
-rw-r--r--Lib/test/test_xmlrpc.py28
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)