1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*7c568831SAndroid Build Coastguard Workerimport setup_test 3*7c568831SAndroid Build Coastguard Workerimport libxml2 4*7c568831SAndroid Build Coastguard Workerimport sys 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 Workerdtd="""<!ELEMENT foo EMPTY>""" 10*7c568831SAndroid Build Coastguard Workerinstance="""<?xml version="1.0"?> 11*7c568831SAndroid Build Coastguard Worker<foo></foo>""" 12*7c568831SAndroid Build Coastguard Worker 13*7c568831SAndroid Build Coastguard Workerdtd = libxml2.parseDTD(None, 'test.dtd') 14*7c568831SAndroid Build Coastguard Workerctxt = libxml2.newValidCtxt() 15*7c568831SAndroid Build Coastguard Workerdoc = libxml2.parseDoc(instance) 16*7c568831SAndroid Build Coastguard Workerret = doc.validateDtd(ctxt, dtd) 17*7c568831SAndroid Build Coastguard Workerif ret != 1: 18*7c568831SAndroid Build Coastguard Worker print("error doing DTD validation") 19*7c568831SAndroid Build Coastguard Worker sys.exit(1) 20*7c568831SAndroid Build Coastguard Worker 21*7c568831SAndroid Build Coastguard Workerdoc.freeDoc() 22*7c568831SAndroid Build Coastguard Workerdtd.freeDtd() 23*7c568831SAndroid Build Coastguard Workerdel dtd 24*7c568831SAndroid Build Coastguard Workerdel ctxt 25*7c568831SAndroid Build Coastguard Worker 26*7c568831SAndroid Build Coastguard Worker# Memory debug specific 27*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser() 28*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0: 29*7c568831SAndroid Build Coastguard Worker print("OK") 30*7c568831SAndroid Build Coastguard Workerelse: 31*7c568831SAndroid Build Coastguard Worker print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 32*7c568831SAndroid Build Coastguard Worker 33