1 #!/usr/bin/python -u 2 # 3 # this test exercise the XPath basic engine, parser, etc, and 4 # allows to detect memory leaks 5 # 6 import sys 7 import libxml2 8 9 # Memory debug specific 10 libxml2.debugMemory(1) 11 12 doc = libxml2.parseFile("tst.xml") 13 if doc.name != "tst.xml": 14 print("doc.name error") 15 sys.exit(1); 16 17 ctxt = doc.xpathNewContext() 18 res = ctxt.xpathEval("//*") 19 if len(res) != 2: 20 print("xpath query: wrong node set size") 21 sys.exit(1) 22 if res[0].name != "doc" or res[1].name != "foo": 23 print("xpath query: wrong node set value") 24 sys.exit(1) 25 ctxt.setContextNode(res[0]) 26 res = ctxt.xpathEval("foo") 27 if len(res) != 1: 28 print("xpath query: wrong node set size") 29 sys.exit(1) 30 if res[0].name != "foo": 31 print("xpath query: wrong node set value") 32 sys.exit(1) 33 doc.freeDoc() 34 ctxt.xpathFreeContext() 35 i = 1000 36 while i > 0: 37 doc = libxml2.parseFile("tst.xml") 38 ctxt = doc.xpathNewContext() 39 res = ctxt.xpathEval("//*") 40 doc.freeDoc() 41 ctxt.xpathFreeContext() 42 i = i -1 43 del ctxt 44 45 # Memory debug specific 46 libxml2.cleanupParser() 47 if libxml2.debugMemory(1) == 0: 48 print("OK") 49 else: 50 print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 51 libxml2.dumpMemory() 52