1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*7c568831SAndroid Build Coastguard Workerimport sys 3*7c568831SAndroid Build Coastguard Workerimport setup_test 4*7c568831SAndroid Build Coastguard Workerimport libxml2 5*7c568831SAndroid Build Coastguard Worker 6*7c568831SAndroid Build Coastguard Worker# Memory debug specific 7*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1) 8*7c568831SAndroid Build Coastguard Worker 9*7c568831SAndroid Build Coastguard Workerlog = "" 10*7c568831SAndroid Build Coastguard Worker 11*7c568831SAndroid Build Coastguard Workerclass callback: 12*7c568831SAndroid Build Coastguard Worker def startDocument(self): 13*7c568831SAndroid Build Coastguard Worker global log 14*7c568831SAndroid Build Coastguard Worker log = log + "startDocument:" 15*7c568831SAndroid Build Coastguard Worker 16*7c568831SAndroid Build Coastguard Worker def endDocument(self): 17*7c568831SAndroid Build Coastguard Worker global log 18*7c568831SAndroid Build Coastguard Worker log = log + "endDocument:" 19*7c568831SAndroid Build Coastguard Worker 20*7c568831SAndroid Build Coastguard Worker def startElement(self, tag, attrs): 21*7c568831SAndroid Build Coastguard Worker global log 22*7c568831SAndroid Build Coastguard Worker log = log + "startElement %s %s:" % (tag, attrs) 23*7c568831SAndroid Build Coastguard Worker 24*7c568831SAndroid Build Coastguard Worker def endElement(self, tag): 25*7c568831SAndroid Build Coastguard Worker global log 26*7c568831SAndroid Build Coastguard Worker log = log + "endElement %s:" % (tag) 27*7c568831SAndroid Build Coastguard Worker 28*7c568831SAndroid Build Coastguard Worker def characters(self, data): 29*7c568831SAndroid Build Coastguard Worker global log 30*7c568831SAndroid Build Coastguard Worker log = log + "characters: %s:" % (data) 31*7c568831SAndroid Build Coastguard Worker 32*7c568831SAndroid Build Coastguard Worker def warning(self, msg): 33*7c568831SAndroid Build Coastguard Worker global log 34*7c568831SAndroid Build Coastguard Worker log = log + "warning: %s:" % (msg) 35*7c568831SAndroid Build Coastguard Worker 36*7c568831SAndroid Build Coastguard Worker def error(self, msg): 37*7c568831SAndroid Build Coastguard Worker global log 38*7c568831SAndroid Build Coastguard Worker log = log + "error: %s:" % (msg) 39*7c568831SAndroid Build Coastguard Worker 40*7c568831SAndroid Build Coastguard Worker def fatalError(self, msg): 41*7c568831SAndroid Build Coastguard Worker global log 42*7c568831SAndroid Build Coastguard Worker log = log + "fatalError: %s:" % (msg) 43*7c568831SAndroid Build Coastguard Worker 44*7c568831SAndroid Build Coastguard Workerhandler = callback() 45*7c568831SAndroid Build Coastguard Worker 46*7c568831SAndroid Build Coastguard Workerctxt = libxml2.htmlCreatePushParser(handler, "<foo", 4, "test.xml") 47*7c568831SAndroid Build Coastguard Workerchunk = " url='tst'>b" 48*7c568831SAndroid Build Coastguard Workerctxt.htmlParseChunk(chunk, len(chunk), 0) 49*7c568831SAndroid Build Coastguard Workerchunk = "ar</foo>" 50*7c568831SAndroid Build Coastguard Workerctxt.htmlParseChunk(chunk, len(chunk), 1) 51*7c568831SAndroid Build Coastguard Workerctxt=None 52*7c568831SAndroid Build Coastguard Worker 53*7c568831SAndroid Build Coastguard Workerreference = """startDocument:startElement html None:startElement body None:startElement foo {'url': 'tst'}:characters: bar:endElement foo:endElement body:endElement html:endDocument:""" 54*7c568831SAndroid Build Coastguard Workerif log != reference: 55*7c568831SAndroid Build Coastguard Worker print("Error got: %s" % log) 56*7c568831SAndroid Build Coastguard Worker print("Exprected: %s" % reference) 57*7c568831SAndroid Build Coastguard Worker sys.exit(1) 58*7c568831SAndroid Build Coastguard Worker 59*7c568831SAndroid Build Coastguard Worker# Memory debug specific 60*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser() 61*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0: 62*7c568831SAndroid Build Coastguard Worker print("OK") 63*7c568831SAndroid Build Coastguard Workerelse: 64*7c568831SAndroid Build Coastguard Worker print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 65