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