Blame python/tests/error.py

Packit 423ecb
#!/usr/bin/python -u
Packit 423ecb
#
Packit 423ecb
# This test exercise the redirection of error messages with a
Packit 423ecb
# functions defined in Python.
Packit 423ecb
#
Packit 423ecb
import sys
Packit 423ecb
import libxml2
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.debugMemory(1)
Packit 423ecb
Packit 423ecb
expect='--> I/O --> warning : --> failed to load external entity "missing.xml"\n'
Packit 423ecb
err=""
Packit 423ecb
def callback(ctx, str):
Packit 423ecb
     global err
Packit 423ecb
Packit 423ecb
     err = err + "%s %s" % (ctx, str)
Packit 423ecb
Packit 423ecb
got_exc = 0
Packit 423ecb
libxml2.registerErrorHandler(callback, "-->")
Packit 423ecb
try:
Packit 423ecb
    doc = libxml2.parseFile("missing.xml")
Packit 423ecb
except libxml2.parserError:
Packit 423ecb
    got_exc = 1
Packit 423ecb
Packit 423ecb
if got_exc == 0:
Packit 423ecb
    print("Failed to get a parser exception")
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
if err != expect:
Packit 423ecb
    print("error")
Packit 423ecb
    print("received %s" %(err))
Packit 423ecb
    print("expected %s" %(expect))
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
i = 10000
Packit 423ecb
while i > 0:
Packit 423ecb
    try:
Packit 423ecb
        doc = libxml2.parseFile("missing.xml")
Packit 423ecb
    except libxml2.parserError:
Packit 423ecb
        got_exc = 1
Packit 423ecb
    err = ""
Packit 423ecb
    i = i - 1
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.cleanupParser()
Packit 423ecb
if libxml2.debugMemory(1) == 0:
Packit 423ecb
    print("OK")
Packit 423ecb
else:
Packit 423ecb
    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
Packit 423ecb
    libxml2.dumpMemory()