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