Imported Upstream version 2.8.0
[platform/upstream/libxml2.git] / python / tests / ctxterror.py
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()