xref: /aosp_15_r20/external/libxml2/python/tests/resolver.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
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 Workertry:
6*7c568831SAndroid Build Coastguard Worker    import StringIO
7*7c568831SAndroid Build Coastguard Worker    str_io = StringIO.StringIO
8*7c568831SAndroid Build Coastguard Workerexcept:
9*7c568831SAndroid Build Coastguard Worker    import io
10*7c568831SAndroid Build Coastguard Worker    str_io = io.StringIO
11*7c568831SAndroid Build Coastguard Worker
12*7c568831SAndroid Build Coastguard Worker# Memory debug specific
13*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1)
14*7c568831SAndroid Build Coastguard Worker
15*7c568831SAndroid Build Coastguard Workerdef myResolver(URL, ID, ctxt):
16*7c568831SAndroid Build Coastguard Worker    return(str_io("<foo/>"))
17*7c568831SAndroid Build Coastguard Worker
18*7c568831SAndroid Build Coastguard Workerlibxml2.setEntityLoader(myResolver)
19*7c568831SAndroid Build Coastguard Worker
20*7c568831SAndroid Build Coastguard Workerdoc = libxml2.parseFile("doesnotexist.xml")
21*7c568831SAndroid Build Coastguard Workerroot = doc.children
22*7c568831SAndroid Build Coastguard Workerif root.name != "foo":
23*7c568831SAndroid Build Coastguard Worker    print("root element name error")
24*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
25*7c568831SAndroid Build Coastguard Workerdoc.freeDoc()
26*7c568831SAndroid Build Coastguard Worker
27*7c568831SAndroid Build Coastguard Workeri = 0
28*7c568831SAndroid Build Coastguard Workerwhile i < 5000:
29*7c568831SAndroid Build Coastguard Worker    doc = libxml2.parseFile("doesnotexist.xml")
30*7c568831SAndroid Build Coastguard Worker    root = doc.children
31*7c568831SAndroid Build Coastguard Worker    if root.name != "foo":
32*7c568831SAndroid Build Coastguard Worker        print("root element name error")
33*7c568831SAndroid Build Coastguard Worker        sys.exit(1)
34*7c568831SAndroid Build Coastguard Worker    doc.freeDoc()
35*7c568831SAndroid Build Coastguard Worker    i = i + 1
36*7c568831SAndroid Build Coastguard Worker
37*7c568831SAndroid Build Coastguard Worker
38*7c568831SAndroid Build Coastguard Worker# Memory debug specific
39*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
40*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
41*7c568831SAndroid Build Coastguard Worker    print("OK")
42*7c568831SAndroid Build Coastguard Workerelse:
43*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
44*7c568831SAndroid Build Coastguard Worker
45