Annotation of embedaddon/libxml2/python/tests/xpathleak.py, revision 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>