home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-libxml2 / examples / ctxterror.py < prev    next >
Encoding:
Python Source  |  2003-03-27  |  1.3 KB  |  57 lines

  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.