|
10 | 10 | import io
|
11 | 11 | import operator
|
12 | 12 | import pickle
|
| 13 | +import pyexpat |
13 | 14 | import sys
|
14 | 15 | import types
|
15 | 16 | import unittest
|
|
97 | 98 | <document>&entity;</document>
|
98 | 99 | """
|
99 | 100 |
|
| 101 | +fails_with_expat_2_6_0 = (unittest.expectedFailure |
| 102 | + if pyexpat.version_info >= (2, 6, 0) else |
| 103 | + lambda test: test) |
| 104 | + |
100 | 105 | class ModuleTest(unittest.TestCase):
|
101 | 106 | def test_sanity(self):
|
102 | 107 | # Import sanity.
|
@@ -1044,28 +1049,37 @@ def assert_event_tags(self, parser, expected):
|
1044 | 1049 | self.assertEqual([(action, elem.tag) for action, elem in events],
|
1045 | 1050 | expected)
|
1046 | 1051 |
|
1047 |
| - def test_simple_xml(self): |
1048 |
| - for chunk_size in (None, 1, 5): |
1049 |
| - with self.subTest(chunk_size=chunk_size): |
1050 |
| - parser = ET.XMLPullParser() |
1051 |
| - self.assert_event_tags(parser, []) |
1052 |
| - self._feed(parser, "<!-- comment -->\n", chunk_size) |
1053 |
| - self.assert_event_tags(parser, []) |
1054 |
| - self._feed(parser, |
1055 |
| - "<root>\n <element key='value'>text</element", |
1056 |
| - chunk_size) |
1057 |
| - self.assert_event_tags(parser, []) |
1058 |
| - self._feed(parser, ">\n", chunk_size) |
1059 |
| - self.assert_event_tags(parser, [('end', 'element')]) |
1060 |
| - self._feed(parser, "<element>text</element>tail\n", chunk_size) |
1061 |
| - self._feed(parser, "<empty-element/>\n", chunk_size) |
1062 |
| - self.assert_event_tags(parser, [ |
1063 |
| - ('end', 'element'), |
1064 |
| - ('end', 'empty-element'), |
1065 |
| - ]) |
1066 |
| - self._feed(parser, "</root>\n", chunk_size) |
1067 |
| - self.assert_event_tags(parser, [('end', 'root')]) |
1068 |
| - self.assertIsNone(parser.close()) |
| 1052 | + def test_simple_xml(self, chunk_size=None): |
| 1053 | + parser = ET.XMLPullParser() |
| 1054 | + self.assert_event_tags(parser, []) |
| 1055 | + self._feed(parser, "<!-- comment -->\n", chunk_size) |
| 1056 | + self.assert_event_tags(parser, []) |
| 1057 | + self._feed(parser, |
| 1058 | + "<root>\n <element key='value'>text</element", |
| 1059 | + chunk_size) |
| 1060 | + self.assert_event_tags(parser, []) |
| 1061 | + self._feed(parser, ">\n", chunk_size) |
| 1062 | + self.assert_event_tags(parser, [('end', 'element')]) |
| 1063 | + self._feed(parser, "<element>text</element>tail\n", chunk_size) |
| 1064 | + self._feed(parser, "<empty-element/>\n", chunk_size) |
| 1065 | + self.assert_event_tags(parser, [ |
| 1066 | + ('end', 'element'), |
| 1067 | + ('end', 'empty-element'), |
| 1068 | + ]) |
| 1069 | + self._feed(parser, "</root>\n", chunk_size) |
| 1070 | + self.assert_event_tags(parser, [('end', 'root')]) |
| 1071 | + self.assertIsNone(parser.close()) |
| 1072 | + |
| 1073 | + @fails_with_expat_2_6_0 |
| 1074 | + def test_simple_xml_chunk_1(self): |
| 1075 | + self.test_simple_xml(chunk_size=1) |
| 1076 | + |
| 1077 | + @fails_with_expat_2_6_0 |
| 1078 | + def test_simple_xml_chunk_5(self): |
| 1079 | + self.test_simple_xml(chunk_size=5) |
| 1080 | + |
| 1081 | + def test_simple_xml_chunk_22(self): |
| 1082 | + self.test_simple_xml(chunk_size=22) |
1069 | 1083 |
|
1070 | 1084 | def test_feed_while_iterating(self):
|
1071 | 1085 | parser = ET.XMLPullParser()
|
|
0 commit comments