| #!/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='--> warning: --> failed to load external entity "missing.xml"\n' | |
| err="" | |
| def callback(ctx, str): | |
| global err | |
| err = err + "%s %s" % (ctx, str) | |
| got_exc = 0 | |
| libxml2.registerErrorHandler(callback, "-->") | |
| try: | |
| doc = libxml2.parseFile("missing.xml") | |
| except libxml2.parserError: | |
| got_exc = 1 | |
| if got_exc == 0: | |
| print "Failed to get a parser exception" | |
| sys.exit(1) | |
| if err != expect: | |
| print "error" | |
| print "received %s" %(err) | |
| print "expected %s" %(expect) | |
| sys.exit(1) | |
| i = 10000 | |
| while i > 0: | |
| try: | |
| doc = libxml2.parseFile("missing.xml") | |
| except libxml2.parserError: | |
| got_exc = 1 | |
| 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() |