MCPcopy Index your code
hub / github.com/python/cpython / test_custom_builder

Method test_custom_builder

Lib/test/test_xml_etree.py:628–687  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

626 self.serialize_check(elem, 'text<?key value?><subtag>subtext</subtag>')
627
628 def test_custom_builder(self):
629 # Test parser w. custom builder.
630
631 with open(SIMPLE_XMLFILE) as f:
632 data = f.read()
633 class Builder(list):
634 def start(self, tag, attrib):
635 self.append(("start", tag))
636 def end(self, tag):
637 self.append(("end", tag))
638 def data(self, text):
639 pass
640 builder = Builder()
641 parser = ET.XMLParser(target=builder)
642 parser.feed(data)
643 self.assertEqual(builder, [
644 ('start', 'root'),
645 ('start', 'element'),
646 ('end', 'element'),
647 ('start', 'element'),
648 ('end', 'element'),
649 ('start', 'empty-element'),
650 ('end', 'empty-element'),
651 ('end', 'root'),
652 ])
653
654 with open(SIMPLE_NS_XMLFILE) as f:
655 data = f.read()
656 class Builder(list):
657 def start(self, tag, attrib):
658 self.append(("start", tag))
659 def end(self, tag):
660 self.append(("end", tag))
661 def data(self, text):
662 pass
663 def pi(self, target, data):
664 self.append(("pi", target, data))
665 def comment(self, data):
666 self.append(("comment", data))
667 def start_ns(self, prefix, uri):
668 self.append(("start-ns", prefix, uri))
669 def end_ns(self, prefix):
670 self.append(("end-ns", prefix))
671 builder = Builder()
672 parser = ET.XMLParser(target=builder)
673 parser.feed(data)
674 self.assertEqual(builder, [
675 ('pi', 'pi', 'data'),
676 ('comment', ' comment '),
677 ('start-ns', '', 'namespace'),
678 ('start', '{namespace}root'),
679 ('start', '{namespace}element'),
680 ('end', '{namespace}element'),
681 ('start', '{namespace}element'),
682 ('end', '{namespace}element'),
683 ('start', '{namespace}empty-element'),
684 ('end', '{namespace}empty-element'),
685 ('end', '{namespace}root'),

Callers

nothing calls this directly

Calls 5

feedMethod · 0.95
BuilderClass · 0.70
openFunction · 0.50
readMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected