1#!/usr/bin/python -u
2import sys
3import libxml2
4try:
5    import StringIO
6    str_io = StringIO.StringIO
7except:
8    import io
9    str_io = io.StringIO
10
11# Memory debug specific
12libxml2.debugMemory(1)
13
14def myResolver(URL, ID, ctxt):
15    return(str_io("<foo/>"))
16
17libxml2.setEntityLoader(myResolver)
18
19doc = libxml2.parseFile("doesnotexist.xml")
20root = doc.children
21if root.name != "foo":
22    print("root element name error")
23    sys.exit(1)
24doc.freeDoc()
25
26i = 0
27while i < 5000:
28    doc = libxml2.parseFile("doesnotexist.xml")
29    root = doc.children
30    if root.name != "foo":
31        print("root element name error")
32        sys.exit(1)
33    doc.freeDoc()
34    i = i + 1
35
36
37# Memory debug specific
38libxml2.cleanupParser()
39if libxml2.debugMemory(1) == 0:
40    print("OK")
41else:
42    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
43    libxml2.dumpMemory()
44
45