|
13 | 13 | import operator |
14 | 14 | import os |
15 | 15 | import pickle |
| 16 | +import pyexpat |
16 | 17 | import sys |
17 | 18 | import textwrap |
18 | 19 | import types |
|
120 | 121 | </foo> |
121 | 122 | """ |
122 | 123 |
|
| 124 | +fails_with_expat_2_6_0 = (unittest.expectedFailure |
| 125 | + if pyexpat.version_info >= (2, 6, 0) else |
| 126 | + lambda test: test) |
| 127 | + |
123 | 128 | def checkwarnings(*filters, quiet=False): |
124 | 129 | def decorator(test): |
125 | 130 | def newtest(*args, **kwargs): |
@@ -1480,28 +1485,37 @@ def assert_event_tags(self, parser, expected, max_events=None): |
1480 | 1485 | self.assertEqual([(action, elem.tag) for action, elem in events], |
1481 | 1486 | expected) |
1482 | 1487 |
|
1483 | | - 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) |
1505 | 1519 |
|
1506 | 1520 | def test_feed_while_iterating(self): |
1507 | 1521 | parser = ET.XMLPullParser() |
|
0 commit comments