summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_xmlrpc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_xmlrpc.py')
-rw-r--r--Lib/test/test_xmlrpc.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 8fa63de..b80de18 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -4,6 +4,13 @@ import unittest
import xmlrpclib
from test import test_support
+try:
+ unicode
+except NameError:
+ have_unicode = False
+else:
+ have_unicode = True
+
alist = [{'astring': 'foo@bar.baz.spam',
'afloat': 7283.43,
'anint': 2**20,
@@ -56,6 +63,41 @@ class XMLRPCTestCase(unittest.TestCase):
xmlrpclib.loads(strg)[0][0])
self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,))
+ def test_default_encoding_issues(self):
+ # SF bug #1115989: wrong decoding in '_stringify'
+ utf8 = """<?xml version='1.0' encoding='iso-8859-1'?>
+ <params>
+ <param><value>
+ <string>abc \x95</string>
+ </value></param>
+ <param><value>
+ <struct>
+ <member>
+ <name>def \x96</name>
+ <value><string>ghi \x97</string></value>
+ </member>
+ </struct>
+ </value></param>
+ </params>
+ """
+ old_encoding = sys.getdefaultencoding()
+ reload(sys) # ugh!
+ sys.setdefaultencoding("iso-8859-1")
+ try:
+ (s, d), m = xmlrpclib.loads(utf8)
+ finally:
+ sys.setdefaultencoding(old_encoding)
+ items = d.items()
+ if have_unicode:
+ self.assertEquals(s, u"abc \x95")
+ self.assert_(isinstance(s, unicode))
+ self.assertEquals(items, [(u"def \x96", u"ghi \x97")])
+ self.assert_(isinstance(items[0][0], unicode))
+ self.assert_(isinstance(items[0][1], unicode))
+ else:
+ self.assertEquals(s, "abc \xc2\x95")
+ self.assertEquals(items, [("def \xc2\x96", "ghi \xc2\x97")])
+
def test_main():
test_support.run_unittest(XMLRPCTestCase)