# xml.etree test for cElementTree
+import io
import struct
from test import support
from test.support import import_fresh_module
self.assertEqual(len(elem), 1)
self.assertEqual(elem[0].tag, 'child')
+ def test_iterparse_leaks(self):
+ # Test reference leaks in TreeBuilder (issue #35502).
+ # The test is written to be executed in the hunting reference leaks
+ # mode.
+ XML = '<a></a></b>'
+ parser = cET.iterparse(io.StringIO(XML))
+ next(parser)
+ del parser
+ support.gc_collect()
+
+ def test_xmlpullparser_leaks(self):
+ # Test reference leaks in TreeBuilder (issue #35502).
+ # The test is written to be executed in the hunting reference leaks
+ # mode.
+ XML = '<a></a></b>'
+ parser = cET.XMLPullParser()
+ parser.feed(XML)
+ del parser
+ support.gc_collect()
+
@unittest.skipUnless(cET, 'requires _elementtree')
class TestAliasWorking(unittest.TestCase):
static int
treebuilder_gc_traverse(TreeBuilderObject *self, visitproc visit, void *arg)
{
+ Py_VISIT(self->end_ns_event_obj);
+ Py_VISIT(self->start_ns_event_obj);
+ Py_VISIT(self->end_event_obj);
+ Py_VISIT(self->start_event_obj);
+ Py_VISIT(self->events_append);
Py_VISIT(self->root);
Py_VISIT(self->this);
Py_VISIT(self->last);