1850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard#!/usr/bin/python -u 2850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardimport libxml2 3850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardimport sys 4850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard 5850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard# Memory debug specific 6850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardlibxml2.debugMemory(1) 7850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard 8850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddtd="""<!ELEMENT foo EMPTY>""" 9850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardinstance="""<?xml version="1.0"?> 10850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard<foo></foo>""" 11850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard 12850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddtd = libxml2.parseDTD(None, 'test.dtd') 13850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardctxt = libxml2.newValidCtxt() 14850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddoc = libxml2.parseDoc(instance) 15850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardret = doc.validateDtd(ctxt, dtd) 16850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardif ret != 1: 172cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("error doing DTD validation") 18850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard sys.exit(1) 19850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard 20850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddoc.freeDoc() 21850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddtd.freeDtd() 22850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddel dtd 23850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillarddel ctxt 24850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard 25850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard# Memory debug specific 26850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardlibxml2.cleanupParser() 27850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardif libxml2.debugMemory(1) == 0: 282cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("OK") 29850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillardelse: 302cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 31850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard libxml2.dumpMemory() 32850ce9b6584ecc2893632392f1d3ba46fefc13acDaniel Veillard 33