|
11 | 11 | import io |
12 | 12 | import operator |
13 | 13 | import pickle |
| 14 | +import pyexpat |
14 | 15 | import sys |
15 | 16 | import types |
16 | 17 | import unittest |
|
98 | 99 | <document>&entity;</document> |
99 | 100 | """ |
100 | 101 |
|
| 102 | + |
| 103 | +fails_with_expat_2_6_0 = (unittest.expectedFailure |
| 104 | + if pyexpat.version_info >= (2, 6, 0) else |
| 105 | + lambda test: test) |
| 106 | + |
| 107 | + |
101 | 108 | def checkwarnings(*filters, quiet=False): |
102 | 109 | def decorator(test): |
103 | 110 | def newtest(*args, **kwargs): |
@@ -1059,28 +1066,37 @@ def assert_event_tags(self, parser, expected): |
1059 | 1066 | self.assertEqual([(action, elem.tag) for action, elem in events], |
1060 | 1067 | expected) |
1061 | 1068 |
|
1062 | | - def test_simple_xml(self): |
1063 | | - for chunk_size in (None, 1, 5): |
1064 | | - with self.subTest(chunk_size=chunk_size): |
1065 | | - parser = ET.XMLPullParser() |
1066 | | - self.assert_event_tags(parser, []) |
1067 | | - self._feed(parser, "<!-- comment -->\n", chunk_size) |
1068 | | - self.assert_event_tags(parser, []) |
1069 | | - self._feed(parser, |
1070 | | - "<root>\n <element key='value'>text</element", |
1071 | | - chunk_size) |
1072 | | - self.assert_event_tags(parser, []) |
1073 | | - self._feed(parser, ">\n", chunk_size) |
1074 | | - self.assert_event_tags(parser, [('end', 'element')]) |
1075 | | - self._feed(parser, "<element>text</element>tail\n", chunk_size) |
1076 | | - self._feed(parser, "<empty-element/>\n", chunk_size) |
1077 | | - self.assert_event_tags(parser, [ |
1078 | | - ('end', 'element'), |
1079 | | - ('end', 'empty-element'), |
1080 | | - ]) |
1081 | | - self._feed(parser, "</root>\n", chunk_size) |
1082 | | - self.assert_event_tags(parser, [('end', 'root')]) |
1083 | | - self.assertIsNone(parser.close()) |
| 1069 | + def test_simple_xml(self, chunk_size=None): |
| 1070 | + parser = ET.XMLPullParser() |
| 1071 | + self.assert_event_tags(parser, []) |
| 1072 | + self._feed(parser, "<!-- comment -->\n", chunk_size) |
| 1073 | + self.assert_event_tags(parser, []) |
| 1074 | + self._feed(parser, |
| 1075 | + "<root>\n <element key='value'>text</element", |
| 1076 | + chunk_size) |
| 1077 | + self.assert_event_tags(parser, []) |
| 1078 | + self._feed(parser, ">\n", chunk_size) |
| 1079 | + self.assert_event_tags(parser, [('end', 'element')]) |
| 1080 | + self._feed(parser, "<element>text</element>tail\n", chunk_size) |
| 1081 | + self._feed(parser, "<empty-element/>\n", chunk_size) |
| 1082 | + self.assert_event_tags(parser, [ |
| 1083 | + ('end', 'element'), |
| 1084 | + ('end', 'empty-element'), |
| 1085 | + ]) |
| 1086 | + self._feed(parser, "</root>\n", chunk_size) |
| 1087 | + self.assert_event_tags(parser, [('end', 'root')]) |
| 1088 | + self.assertIsNone(parser.close()) |
| 1089 | + |
| 1090 | + @fails_with_expat_2_6_0 |
| 1091 | + def test_simple_xml_chunk_1(self): |
| 1092 | + self.test_simple_xml(chunk_size=1) |
| 1093 | + |
| 1094 | + @fails_with_expat_2_6_0 |
| 1095 | + def test_simple_xml_chunk_5(self): |
| 1096 | + self.test_simple_xml(chunk_size=5) |
| 1097 | + |
| 1098 | + def test_simple_xml_chunk_22(self): |
| 1099 | + self.test_simple_xml(chunk_size=22) |
1084 | 1100 |
|
1085 | 1101 | def test_feed_while_iterating(self): |
1086 | 1102 | parser = ET.XMLPullParser() |
|
0 commit comments