Home | History | Annotate | Download | only in tests
      1 #!/usr/bin/python -u
      2 #
      3 # This test exercise the redirection of error messages with a
      4 # functions defined in Python.
      5 #
      6 import sys
      7 import libxml2
      8 
      9 # Memory debug specific
     10 libxml2.debugMemory(1)
     11 
     12 expect="""--> (3) xmlns: URI foo is not absolute
     13 --> (4) Opening and ending tag mismatch: x line 0 and y
     14 """
     15 
     16 err=""
     17 def callback(arg,msg,severity,reserved):
     18     global err
     19     err = err + "%s (%d) %s" % (arg,severity,msg)
     20 
     21 s = """<x xmlns="foo"></y>"""
     22 
     23 parserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
     24 parserCtxt.setErrorHandler(callback, "-->")
     25 if parserCtxt.getErrorHandler() != (callback,"-->"):
     26     print("getErrorHandler failed")
     27     sys.exit(1)
     28 parserCtxt.parseChunk(s,len(s),1)
     29 doc = parserCtxt.doc()
     30 doc.freeDoc()
     31 parserCtxt = None
     32 
     33 if err != expect:
     34     print("error")
     35     print("received %s" %(err))
     36     print("expected %s" %(expect))
     37     sys.exit(1)
     38 
     39 i = 10000
     40 while i > 0:
     41     parserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
     42     parserCtxt.setErrorHandler(callback, "-->")
     43     parserCtxt.parseChunk(s,len(s),1)
     44     doc = parserCtxt.doc()
     45     doc.freeDoc()
     46     parserCtxt = None
     47     err = ""
     48     i = i - 1
     49 
     50 # Memory debug specific
     51 libxml2.cleanupParser()
     52 if libxml2.debugMemory(1) == 0:
     53     print("OK")
     54 else:
     55     print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
     56     libxml2.dumpMemory()
     57