| #!/usr/bin/python -u |
| # |
| # This test exercise the redirection of error messages with a |
| # functions defined in Python. |
| # |
| import sys |
| import libxml2 |
| |
| # Memory debug specific |
| libxml2.debugMemory(1) |
| |
| expect="""--> (3) xmlns: URI foo is not absolute |
| --> (4) Opening and ending tag mismatch: x line 0 and y |
| """ |
| |
| err="" |
| def callback(arg,msg,severity,reserved): |
| global err |
| err = err + "%s (%d) %s" % (arg,severity,msg) |
| |
| s = """<x xmlns="foo"></y>""" |
| |
| parserCtxt = libxml2.createPushParser(None,"",0,"test.xml") |
| parserCtxt.setErrorHandler(callback, "-->") |
| if parserCtxt.getErrorHandler() != (callback,"-->"): |
| print "getErrorHandler failed" |
| sys.exit(1) |
| parserCtxt.parseChunk(s,len(s),1) |
| doc = parserCtxt.doc() |
| doc.freeDoc() |
| parserCtxt = None |
| |
| if err != expect: |
| print "error" |
| print "received %s" %(err) |
| print "expected %s" %(expect) |
| sys.exit(1) |
| |
| i = 10000 |
| while i > 0: |
| parserCtxt = libxml2.createPushParser(None,"",0,"test.xml") |
| parserCtxt.setErrorHandler(callback, "-->") |
| parserCtxt.parseChunk(s,len(s),1) |
| doc = parserCtxt.doc() |
| doc.freeDoc() |
| parserCtxt = None |
| err = "" |
| i = i - 1 |
| |
| # Memory debug specific |
| libxml2.cleanupParser() |
| if libxml2.debugMemory(1) == 0: |
| print "OK" |
| else: |
| print "Memory leak %d bytes" % (libxml2.debugMemory(1)) |
| libxml2.dumpMemory() |