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