xref: /aosp_15_r20/external/libxml2/python/tests/ctxterror.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*7c568831SAndroid Build Coastguard Worker#
3*7c568831SAndroid Build Coastguard Worker# This test exercise the redirection of error messages with a
4*7c568831SAndroid Build Coastguard Worker# functions defined in Python.
5*7c568831SAndroid Build Coastguard Worker#
6*7c568831SAndroid Build Coastguard Workerimport sys
7*7c568831SAndroid Build Coastguard Workerimport setup_test
8*7c568831SAndroid Build Coastguard Workerimport libxml2
9*7c568831SAndroid Build Coastguard Worker
10*7c568831SAndroid Build Coastguard Worker# Memory debug specific
11*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1)
12*7c568831SAndroid Build Coastguard Worker
13*7c568831SAndroid Build Coastguard Workerexpect="""--> (3) xmlns: URI foo is not absolute
14*7c568831SAndroid Build Coastguard Worker--> (4) Opening and ending tag mismatch: x line 1 and y
15*7c568831SAndroid Build Coastguard Worker"""
16*7c568831SAndroid Build Coastguard Worker
17*7c568831SAndroid Build Coastguard Workererr=""
18*7c568831SAndroid Build Coastguard Workerdef callback(arg,msg,severity,reserved):
19*7c568831SAndroid Build Coastguard Worker    global err
20*7c568831SAndroid Build Coastguard Worker    err = err + "%s (%d) %s" % (arg,severity,msg)
21*7c568831SAndroid Build Coastguard Worker
22*7c568831SAndroid Build Coastguard Workers = """<x xmlns="foo"></y>"""
23*7c568831SAndroid Build Coastguard Worker
24*7c568831SAndroid Build Coastguard WorkerparserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
25*7c568831SAndroid Build Coastguard WorkerparserCtxt.setErrorHandler(callback, "-->")
26*7c568831SAndroid Build Coastguard Workerif parserCtxt.getErrorHandler() != (callback,"-->"):
27*7c568831SAndroid Build Coastguard Worker    print("getErrorHandler failed")
28*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
29*7c568831SAndroid Build Coastguard WorkerparserCtxt.parseChunk(s,len(s),1)
30*7c568831SAndroid Build Coastguard Workerdoc = parserCtxt.doc()
31*7c568831SAndroid Build Coastguard Workerdoc.freeDoc()
32*7c568831SAndroid Build Coastguard WorkerparserCtxt = None
33*7c568831SAndroid Build Coastguard Worker
34*7c568831SAndroid Build Coastguard Workerif err != expect:
35*7c568831SAndroid Build Coastguard Worker    print("error")
36*7c568831SAndroid Build Coastguard Worker    print("received %s" %(err))
37*7c568831SAndroid Build Coastguard Worker    print("expected %s" %(expect))
38*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
39*7c568831SAndroid Build Coastguard Worker
40*7c568831SAndroid Build Coastguard Workeri = 10000
41*7c568831SAndroid Build Coastguard Workerwhile i > 0:
42*7c568831SAndroid Build Coastguard Worker    parserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
43*7c568831SAndroid Build Coastguard Worker    parserCtxt.setErrorHandler(callback, "-->")
44*7c568831SAndroid Build Coastguard Worker    parserCtxt.parseChunk(s,len(s),1)
45*7c568831SAndroid Build Coastguard Worker    doc = parserCtxt.doc()
46*7c568831SAndroid Build Coastguard Worker    doc.freeDoc()
47*7c568831SAndroid Build Coastguard Worker    parserCtxt = None
48*7c568831SAndroid Build Coastguard Worker    err = ""
49*7c568831SAndroid Build Coastguard Worker    i = i - 1
50*7c568831SAndroid Build Coastguard Worker
51*7c568831SAndroid Build Coastguard Worker# Memory debug specific
52*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
53*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
54*7c568831SAndroid Build Coastguard Worker    print("OK")
55*7c568831SAndroid Build Coastguard Workerelse:
56*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
57