#!/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='--> I/O --> 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()
