Annotation of embedaddon/libxml2/python/tests/xpathleak.py, revision 1.1.1.1

1.1       misho       1: #!/usr/bin/python
                      2: import sys, libxml2
                      3: 
                      4: libxml2.debugMemory(True)
                      5: 
                      6: expect="""--> Invalid expression
                      7: --> xmlXPathEval: evaluation failed
                      8: --> Invalid expression
                      9: --> xmlXPathEval: evaluation failed
                     10: --> Invalid expression
                     11: --> xmlXPathEval: evaluation failed
                     12: --> Invalid expression
                     13: --> xmlXPathEval: evaluation failed
                     14: --> Invalid expression
                     15: --> xmlXPathEval: evaluation failed
                     16: --> Invalid expression
                     17: --> xmlXPathEval: evaluation failed
                     18: --> Invalid expression
                     19: --> xmlXPathEval: evaluation failed
                     20: --> Invalid expression
                     21: --> xmlXPathEval: evaluation failed
                     22: --> Invalid expression
                     23: --> xmlXPathEval: evaluation failed
                     24: --> Invalid expression
                     25: --> xmlXPathEval: evaluation failed
                     26: """
                     27: err=""
                     28: def callback(ctx, str):
                     29:      global err
                     30: 
                     31:      err = err + "%s %s" % (ctx, str)
                     32: 
                     33: libxml2.registerErrorHandler(callback, "-->")
                     34: 
                     35: doc = libxml2.parseDoc("<fish/>")
                     36: ctxt = doc.xpathNewContext()
                     37: ctxt.setContextNode(doc)
                     38: badexprs = (
                     39:        ":false()", "bad:()", "bad(:)", ":bad(:)", "bad:(:)", "bad:bad(:)",
                     40:        "a:/b", "/c:/d", "//e:/f", "g://h"
                     41:        )
                     42: for expr in badexprs:
                     43:        try:
                     44:                ctxt.xpathEval(expr)
                     45:        except libxml2.xpathError, e:
                     46:                pass
                     47:        else:
                     48:                print "Unexpectedly legal expression:", expr
                     49: ctxt.xpathFreeContext()
                     50: doc.freeDoc()
                     51: 
                     52: if err != expect:
                     53:     print "error"
                     54:     print "received %s" %(err)
                     55:     print "expected %s" %(expect)
                     56:     sys.exit(1)
                     57: 
                     58: libxml2.cleanupParser()
                     59: leakedbytes = libxml2.debugMemory(True)
                     60: if leakedbytes == 0:
                     61:        print "OK"
                     62: else:
                     63:        print "Memory leak", leakedbytes, "bytes"
                     64:        # drop file to .memdump file in cwd, but won't work if not compiled in
                     65:        libxml2.dumpMemory()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>