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