Server : Apache System : Linux server1.cgrithy.com 3.10.0-1160.95.1.el7.x86_64 #1 SMP Mon Jul 24 13:59:37 UTC 2023 x86_64 User : nobody ( 99) PHP Version : 8.1.23 Disable Function : NONE Directory : /usr/share/doc/libxml2-python-2.9.1/ |
#!/usr/bin/python -u # -*- coding: ISO-8859-1 -*- import sys import libxml2 # Memory debug specific libxml2.debugMemory(1) ctxt = None class callback: def __init__(self, startd, starte, ende, delta, endd): self.startd = startd self.starte = starte self.ende = ende self.endd = endd self.delta = delta self.count = 0 def startDocument(self): global ctxt if ctxt.byteConsumed() != self.startd: print("document start at wrong index: %d expecting %d\n" % ( ctxt.byteConsumed(), self.startd)) sys.exit(1) def endDocument(self): global ctxt expect = self.ende + self.delta * (self.count - 1) + self.endd if ctxt.byteConsumed() != expect: print("document end at wrong index: %d expecting %d\n" % ( ctxt.byteConsumed(), expect)) sys.exit(1) def startElement(self, tag, attrs): global ctxt if tag == "bar1": expect = self.starte + self.delta * self.count if ctxt.byteConsumed() != expect: print("element start at wrong index: %d expecting %d\n" % ( ctxt.byteConsumed(), expect)) sys.exit(1) def endElement(self, tag): global ctxt if tag == "bar1": expect = self.ende + self.delta * self.count if ctxt.byteConsumed() != expect: print("element end at wrong index: %d expecting %d\n" % ( ctxt.byteConsumed(), expect)) sys.exit(1) self.count = self.count + 1 def characters(self, data): pass # # First run a pure UTF-8 test # handler = callback(0, 13, 27, 198, 183) ctxt = libxml2.createPushParser(handler, "<foo>\n", 6, "test.xml") chunk = """ <bar1>chars1</bar1> <bar2>chars2</bar2> <bar3>chars3</bar3> <bar4>chars4</bar4> <bar5>chars5</bar5> <bar6><s6</bar6> <bar7>chars7</bar7> <bar8>&8</bar8> <bar9>chars9</bar9> """ i = 0 while i < 10000: ctxt.parseChunk(chunk, len(chunk), 0) i = i + 1 chunk = "</foo>" ctxt.parseChunk(chunk, len(chunk), 1) ctxt=None # # Then run a test relying on ISO-Latin-1 # handler = callback(43, 57, 71, 198, 183) chunk="""<?xml version="1.0" encoding="ISO-8859-1"?> <foo> """ ctxt = libxml2.createPushParser(handler, chunk, len(chunk), "test.xml") chunk = """ <bar1>chars1</bar1> <bar2>chars2</bar2> <bar3>chars3</bar3> <bar4>ch�rs4</bar4> <bar5>chars5</bar5> <bar6><s6</bar6> <bar7>chars7</bar7> <bar8>&8</bar8> <bar9>tr�s 9</bar9> """ i = 0 while i < 10000: ctxt.parseChunk(chunk, len(chunk), 0) i = i + 1 chunk = "</foo>" ctxt.parseChunk(chunk, len(chunk), 1) ctxt=None # Memory debug specific libxml2.cleanupParser() if libxml2.debugMemory(1) == 0: print("OK") else: print("Memory leak %d bytes" % (libxml2.debugMemory(1))) libxml2.dumpMemory()