|
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):
|
@@ -1400,28 +1405,37 @@ def assert_event_tags(self, parser, expected, max_events=None):
|
1400 | 1405 | self.assertEqual([(action, elem.tag) for action, elem in events],
|
1401 | 1406 | expected)
|
1402 | 1407 |
|
1403 |
| - def test_simple_xml(self): |
1404 |
| - for chunk_size in (None, 1, 5): |
1405 |
| - with self.subTest(chunk_size=chunk_size): |
1406 |
| - parser = ET.XMLPullParser() |
1407 |
| - self.assert_event_tags(parser, []) |
1408 |
| - self._feed(parser, "<!-- comment -->\n", chunk_size) |
1409 |
| - self.assert_event_tags(parser, []) |
1410 |
| - self._feed(parser, |
1411 |
| - "<root>\n <element key='value'>text</element", |
1412 |
| - chunk_size) |
1413 |
| - self.assert_event_tags(parser, []) |
1414 |
| - self._feed(parser, ">\n", chunk_size) |
1415 |
| - self.assert_event_tags(parser, [('end', 'element')]) |
1416 |
| - self._feed(parser, "<element>text</element>tail\n", chunk_size) |
1417 |
| - self._feed(parser, "<empty-element/>\n", chunk_size) |
1418 |
| - self.assert_event_tags(parser, [ |
1419 |
| - ('end', 'element'), |
1420 |
| - ('end', 'empty-element'), |
1421 |
| - ]) |
1422 |
| - self._feed(parser, "</root>\n", chunk_size) |
1423 |
| - self.assert_event_tags(parser, [('end', 'root')]) |
1424 |
| - self.assertIsNone(parser.close()) |
| 1408 | + def test_simple_xml(self, chunk_size=None): |
| 1409 | + parser = ET.XMLPullParser() |
| 1410 | + self.assert_event_tags(parser, []) |
| 1411 | + self._feed(parser, "<!-- comment -->\n", chunk_size) |
| 1412 | + self.assert_event_tags(parser, []) |
| 1413 | + self._feed(parser, |
| 1414 | + "<root>\n <element key='value'>text</element", |
| 1415 | + chunk_size) |
| 1416 | + self.assert_event_tags(parser, []) |
| 1417 | + self._feed(parser, ">\n", chunk_size) |
| 1418 | + self.assert_event_tags(parser, [('end', 'element')]) |
| 1419 | + self._feed(parser, "<element>text</element>tail\n", chunk_size) |
| 1420 | + self._feed(parser, "<empty-element/>\n", chunk_size) |
| 1421 | + self.assert_event_tags(parser, [ |
| 1422 | + ('end', 'element'), |
| 1423 | + ('end', 'empty-element'), |
| 1424 | + ]) |
| 1425 | + self._feed(parser, "</root>\n", chunk_size) |
| 1426 | + self.assert_event_tags(parser, [('end', 'root')]) |
| 1427 | + self.assertIsNone(parser.close()) |
| 1428 | + |
| 1429 | + @fails_with_expat_2_6_0 |
| 1430 | + def test_simple_xml_chunk_1(self): |
| 1431 | + self.test_simple_xml(chunk_size=1) |
| 1432 | + |
| 1433 | + @fails_with_expat_2_6_0 |
| 1434 | + def test_simple_xml_chunk_5(self): |
| 1435 | + self.test_simple_xml(chunk_size=5) |
| 1436 | + |
| 1437 | + def test_simple_xml_chunk_22(self): |
| 1438 | + self.test_simple_xml(chunk_size=22) |
1425 | 1439 |
|
1426 | 1440 | def test_feed_while_iterating(self):
|
1427 | 1441 | parser = ET.XMLPullParser()
|
|
0 commit comments