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

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)
1.1.1.2 ! misho      45:        except libxml2.xpathError:
1.1       misho      46:                pass
                     47:        else:
1.1.1.2 ! misho      48:                print("Unexpectedly legal expression:", expr)
1.1       misho      49: ctxt.xpathFreeContext()
                     50: doc.freeDoc()
                     51: 
                     52: if err != expect:
1.1.1.2 ! misho      53:     print("error")
        !            54:     print("received %s" %(err))
        !            55:     print("expected %s" %(expect))
1.1       misho      56:     sys.exit(1)
                     57: 
                     58: libxml2.cleanupParser()
                     59: leakedbytes = libxml2.debugMemory(True)
                     60: if leakedbytes == 0:
1.1.1.2 ! misho      61:        print("OK")
1.1       misho      62: else:
1.1.1.2 ! misho      63:        print("Memory leak", leakedbytes, "bytes")
1.1       misho      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>