Issue #22915: SAX parser now supports files opened with file descriptor or
bytes path.
This commit is contained in:
parent
7a6915e17d
commit
fc8e9b0e72
|
@ -648,6 +648,30 @@ class ExpatReaderTest(XmlTestBase):
|
|||
|
||||
self.assertEqual(result.getvalue(), xml_test_out)
|
||||
|
||||
def test_expat_binary_file_bytes_name(self):
|
||||
fname = os.fsencode(TEST_XMLFILE)
|
||||
parser = create_parser()
|
||||
result = BytesIO()
|
||||
xmlgen = XMLGenerator(result)
|
||||
|
||||
parser.setContentHandler(xmlgen)
|
||||
with open(fname, 'rb') as f:
|
||||
parser.parse(f)
|
||||
|
||||
self.assertEqual(result.getvalue(), xml_test_out)
|
||||
|
||||
def test_expat_binary_file_int_name(self):
|
||||
parser = create_parser()
|
||||
result = BytesIO()
|
||||
xmlgen = XMLGenerator(result)
|
||||
|
||||
parser.setContentHandler(xmlgen)
|
||||
with open(TEST_XMLFILE, 'rb') as f:
|
||||
with open(f.fileno(), 'rb', closefd=False) as f2:
|
||||
parser.parse(f2)
|
||||
|
||||
self.assertEqual(result.getvalue(), xml_test_out)
|
||||
|
||||
# ===== DTDHandler support
|
||||
|
||||
class TestDTDHandler:
|
||||
|
|
|
@ -346,7 +346,7 @@ def prepare_input_source(source, base=""):
|
|||
f = source
|
||||
source = xmlreader.InputSource()
|
||||
source.setByteStream(f)
|
||||
if hasattr(f, "name"):
|
||||
if hasattr(f, "name") and isinstance(f.name, str):
|
||||
source.setSystemId(f.name)
|
||||
|
||||
if source.getByteStream() is None:
|
||||
|
|
Loading…
Reference in New Issue