diff options
Diffstat (limited to 'Lib/test/test_sax.py')
-rw-r--r-- | Lib/test/test_sax.py | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index 32020b92c4..cfa18f7da5 100644 --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -24,8 +24,8 @@ from test.support import findfile, run_unittest TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata") TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata") try: - TEST_XMLFILE.encode("utf8") - TEST_XMLFILE_OUT.encode("utf8") + TEST_XMLFILE.encode("utf-8") + TEST_XMLFILE_OUT.encode("utf-8") except UnicodeEncodeError: raise unittest.SkipTest("filename is not encodable to utf8") @@ -319,6 +319,24 @@ class XmlgenTest: self.assertEqual(result.getvalue(), self.xml("<doc> </doc>")) + def test_xmlgen_encoding_bytes(self): + encodings = ('iso-8859-15', 'utf-8', 'utf-8-sig', + 'utf-16', 'utf-16be', 'utf-16le', + 'utf-32', 'utf-32be', 'utf-32le') + for encoding in encodings: + result = self.ioclass() + gen = XMLGenerator(result, encoding=encoding) + + gen.startDocument() + gen.startElement("doc", {"a": '\u20ac'}) + gen.characters("\u20ac".encode(encoding)) + gen.ignorableWhitespace(" ".encode(encoding)) + gen.endElement("doc") + gen.endDocument() + + self.assertEqual(result.getvalue(), + self.xml('<doc a="\u20ac">\u20ac </doc>', encoding=encoding)) + def test_xmlgen_ns(self): result = self.ioclass() gen = XMLGenerator(result) @@ -556,14 +574,18 @@ class StreamReaderWriterXmlgenTest(XmlgenTest, unittest.TestCase): def ioclass(self): writer = codecs.open(self.fname, 'w', encoding='ascii', errors='xmlcharrefreplace', buffering=0) - self.addCleanup(support.unlink, self.fname) - writer.getvalue = self.getvalue + def cleanup(): + writer.close() + support.unlink(self.fname) + self.addCleanup(cleanup) + def getvalue(): + # Windows will not let use reopen without first closing + writer.close() + with open(writer.name, 'rb') as f: + return f.read() + writer.getvalue = getvalue return writer - def getvalue(self): - with open(self.fname, 'rb') as f: - return f.read() - def xml(self, doc, encoding='iso-8859-1'): return ('<?xml version="1.0" encoding="%s"?>\n%s' % (encoding, doc)).encode('ascii', 'xmlcharrefreplace') |