gh-115133: Fix tests for XMLPullParser with Expat 2.6.0 (GH-115164) · python/cpython@4a08e7b
@@ -13,6 +13,7 @@
1313import operator
1414import os
1515import pickle
16+import pyexpat
1617import sys
1718import textwrap
1819import types
120121</foo>
121122"""
122123124+fails_with_expat_2_6_0 = (unittest.expectedFailure
125+if pyexpat.version_info >= (2, 6, 0) else
126+lambda test: test)
127+123128def checkwarnings(*filters, quiet=False):
124129def decorator(test):
125130def newtest(*args, **kwargs):
@@ -1480,28 +1485,37 @@ def assert_event_tags(self, parser, expected, max_events=None):
14801485self.assertEqual([(action, elem.tag) for action, elem in events],
14811486expected)
148214871483-def test_simple_xml(self):
1484-for chunk_size in (None, 1, 5):
1485-with self.subTest(chunk_size=chunk_size):
1486-parser = ET.XMLPullParser()
1487-self.assert_event_tags(parser, [])
1488-self._feed(parser, "<!-- comment -->\n", chunk_size)
1489-self.assert_event_tags(parser, [])
1490-self._feed(parser,
1491-"<root>\n <element key='value'>text</element",
1492-chunk_size)
1493-self.assert_event_tags(parser, [])
1494-self._feed(parser, ">\n", chunk_size)
1495-self.assert_event_tags(parser, [('end', 'element')])
1496-self._feed(parser, "<element>text</element>tail\n", chunk_size)
1497-self._feed(parser, "<empty-element/>\n", chunk_size)
1498-self.assert_event_tags(parser, [
1499- ('end', 'element'),
1500- ('end', 'empty-element'),
1501- ])
1502-self._feed(parser, "</root>\n", chunk_size)
1503-self.assert_event_tags(parser, [('end', 'root')])
1504-self.assertIsNone(parser.close())
1488+def test_simple_xml(self, chunk_size=None):
1489+parser = ET.XMLPullParser()
1490+self.assert_event_tags(parser, [])
1491+self._feed(parser, "<!-- comment -->\n", chunk_size)
1492+self.assert_event_tags(parser, [])
1493+self._feed(parser,
1494+"<root>\n <element key='value'>text</element",
1495+chunk_size)
1496+self.assert_event_tags(parser, [])
1497+self._feed(parser, ">\n", chunk_size)
1498+self.assert_event_tags(parser, [('end', 'element')])
1499+self._feed(parser, "<element>text</element>tail\n", chunk_size)
1500+self._feed(parser, "<empty-element/>\n", chunk_size)
1501+self.assert_event_tags(parser, [
1502+ ('end', 'element'),
1503+ ('end', 'empty-element'),
1504+ ])
1505+self._feed(parser, "</root>\n", chunk_size)
1506+self.assert_event_tags(parser, [('end', 'root')])
1507+self.assertIsNone(parser.close())
1508+1509+@fails_with_expat_2_6_0
1510+def test_simple_xml_chunk_1(self):
1511+self.test_simple_xml(chunk_size=1)
1512+1513+@fails_with_expat_2_6_0
1514+def test_simple_xml_chunk_5(self):
1515+self.test_simple_xml(chunk_size=5)
1516+1517+def test_simple_xml_chunk_22(self):
1518+self.test_simple_xml(chunk_size=22)
1505151915061520def test_feed_while_iterating(self):
15071521parser = ET.XMLPullParser()