|
14 | 14 | import operator
|
15 | 15 | import os
|
16 | 16 | import pickle
|
| 17 | +import pyexpat |
17 | 18 | import sys
|
18 | 19 | import textwrap
|
19 | 20 | import types
|
|
103 | 104 | <document>&entity;</document>
|
104 | 105 | """
|
105 | 106 |
|
| 107 | + |
| 108 | +fails_with_expat_2_6_0 = (unittest.expectedFailure |
| 109 | + if pyexpat.version_info >= (2, 6, 0) else |
| 110 | + lambda test: test) |
| 111 | + |
| 112 | + |
106 | 113 | def checkwarnings(*filters, quiet=False):
|
107 | 114 | def decorator(test):
|
108 | 115 | def newtest(*args, **kwargs):
|
@@ -1266,28 +1273,37 @@ def assert_event_tags(self, parser, expected, max_events=None):
|
1266 | 1273 | self.assertEqual([(action, elem.tag) for action, elem in events],
|
1267 | 1274 | expected)
|
1268 | 1275 |
|
1269 |
| - def test_simple_xml(self): |
1270 |
| - for chunk_size in (None, 1, 5): |
1271 |
| - with self.subTest(chunk_size=chunk_size): |
1272 |
| - parser = ET.XMLPullParser() |
1273 |
| - self.assert_event_tags(parser, []) |
1274 |
| - self._feed(parser, "<!-- comment -->\n", chunk_size) |
1275 |
| - self.assert_event_tags(parser, []) |
1276 |
| - self._feed(parser, |
1277 |
| - "<root>\n <element key='value'>text</element", |
1278 |
| - chunk_size) |
1279 |
| - self.assert_event_tags(parser, []) |
1280 |
| - self._feed(parser, ">\n", chunk_size) |
1281 |
| - self.assert_event_tags(parser, [('end', 'element')]) |
1282 |
| - self._feed(parser, "<element>text</element>tail\n", chunk_size) |
1283 |
| - self._feed(parser, "<empty-element/>\n", chunk_size) |
1284 |
| - self.assert_event_tags(parser, [ |
1285 |
| - ('end', 'element'), |
1286 |
| - ('end', 'empty-element'), |
1287 |
| - ]) |
1288 |
| - self._feed(parser, "</root>\n", chunk_size) |
1289 |
| - self.assert_event_tags(parser, [('end', 'root')]) |
1290 |
| - self.assertIsNone(parser.close()) |
| 1276 | + def test_simple_xml(self, chunk_size=None): |
| 1277 | + parser = ET.XMLPullParser() |
| 1278 | + self.assert_event_tags(parser, []) |
| 1279 | + self._feed(parser, "<!-- comment -->\n", chunk_size) |
| 1280 | + self.assert_event_tags(parser, []) |
| 1281 | + self._feed(parser, |
| 1282 | + "<root>\n <element key='value'>text</element", |
| 1283 | + chunk_size) |
| 1284 | + self.assert_event_tags(parser, []) |
| 1285 | + self._feed(parser, ">\n", chunk_size) |
| 1286 | + self.assert_event_tags(parser, [('end', 'element')]) |
| 1287 | + self._feed(parser, "<element>text</element>tail\n", chunk_size) |
| 1288 | + self._feed(parser, "<empty-element/>\n", chunk_size) |
| 1289 | + self.assert_event_tags(parser, [ |
| 1290 | + ('end', 'element'), |
| 1291 | + ('end', 'empty-element'), |
| 1292 | + ]) |
| 1293 | + self._feed(parser, "</root>\n", chunk_size) |
| 1294 | + self.assert_event_tags(parser, [('end', 'root')]) |
| 1295 | + self.assertIsNone(parser.close()) |
| 1296 | + |
| 1297 | + @fails_with_expat_2_6_0 |
| 1298 | + def test_simple_xml_chunk_1(self): |
| 1299 | + self.test_simple_xml(chunk_size=1) |
| 1300 | + |
| 1301 | + @fails_with_expat_2_6_0 |
| 1302 | + def test_simple_xml_chunk_5(self): |
| 1303 | + self.test_simple_xml(chunk_size=5) |
| 1304 | + |
| 1305 | + def test_simple_xml_chunk_22(self): |
| 1306 | + self.test_simple_xml(chunk_size=22) |
1291 | 1307 |
|
1292 | 1308 | def test_feed_while_iterating(self):
|
1293 | 1309 | parser = ET.XMLPullParser()
|
|
0 commit comments