xref: /aosp_15_r20/external/libxml2/python/tests/tstmem.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
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 Worker
5*7c568831SAndroid Build Coastguard Workertry:
6*7c568831SAndroid Build Coastguard Worker    import libxml2mod
7*7c568831SAndroid Build Coastguard Workerexcept ModuleNotFoundError:
8*7c568831SAndroid Build Coastguard Worker    from libxmlmods import libxml2mod
9*7c568831SAndroid Build Coastguard Worker
10*7c568831SAndroid Build Coastguard Workerimport sys
11*7c568831SAndroid Build Coastguard Worker
12*7c568831SAndroid Build Coastguard Workerdef error(msg, data):
13*7c568831SAndroid Build Coastguard Worker    pass
14*7c568831SAndroid Build Coastguard Worker
15*7c568831SAndroid Build Coastguard Worker# Memory debug specific
16*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1)
17*7c568831SAndroid Build Coastguard Worker
18*7c568831SAndroid Build Coastguard Workerdtd="""<!ELEMENT foo EMPTY>"""
19*7c568831SAndroid Build Coastguard Workerinstance="""<?xml version="1.0"?>
20*7c568831SAndroid Build Coastguard Worker<foo></foo>"""
21*7c568831SAndroid Build Coastguard Worker
22*7c568831SAndroid Build Coastguard Workerdtd = libxml2.parseDTD(None, 'test.dtd')
23*7c568831SAndroid Build Coastguard Workerctxt = libxml2.newValidCtxt()
24*7c568831SAndroid Build Coastguard Workerlibxml2mod.xmlSetValidErrors(ctxt._o, error, error)
25*7c568831SAndroid Build Coastguard Workerdoc = libxml2.parseDoc(instance)
26*7c568831SAndroid Build Coastguard Workerret = doc.validateDtd(ctxt, dtd)
27*7c568831SAndroid Build Coastguard Workerif ret != 1:
28*7c568831SAndroid Build Coastguard Worker    print("error doing DTD validation")
29*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
30*7c568831SAndroid Build Coastguard Worker
31*7c568831SAndroid Build Coastguard Workerdoc.freeDoc()
32*7c568831SAndroid Build Coastguard Workerdtd.freeDtd()
33*7c568831SAndroid Build Coastguard Workerdel dtd
34*7c568831SAndroid Build Coastguard Workerdel ctxt
35*7c568831SAndroid Build Coastguard Worker
36*7c568831SAndroid Build Coastguard Worker# Memory debug specific
37*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
38*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
39*7c568831SAndroid Build Coastguard Worker    print("OK")
40*7c568831SAndroid Build Coastguard Workerelse:
41*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
42