xref: /aosp_15_r20/external/libxml2/python/tests/error.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='--> I/O --> warning : --> failed to load "missing.xml": No such file or directory\n'
14*7c568831SAndroid Build Coastguard Workererr=""
15*7c568831SAndroid Build Coastguard Workerdef callback(ctx, str):
16*7c568831SAndroid Build Coastguard Worker     global err
17*7c568831SAndroid Build Coastguard Worker
18*7c568831SAndroid Build Coastguard Worker     err = err + "%s %s" % (ctx, str)
19*7c568831SAndroid Build Coastguard Worker
20*7c568831SAndroid Build Coastguard Workergot_exc = 0
21*7c568831SAndroid Build Coastguard Workerlibxml2.registerErrorHandler(callback, "-->")
22*7c568831SAndroid Build Coastguard Workertry:
23*7c568831SAndroid Build Coastguard Worker    doc = libxml2.parseFile("missing.xml")
24*7c568831SAndroid Build Coastguard Workerexcept libxml2.parserError:
25*7c568831SAndroid Build Coastguard Worker    got_exc = 1
26*7c568831SAndroid Build Coastguard Worker
27*7c568831SAndroid Build Coastguard Workerif got_exc == 0:
28*7c568831SAndroid Build Coastguard Worker    print("Failed to get a parser exception")
29*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
30*7c568831SAndroid Build Coastguard Worker
31*7c568831SAndroid Build Coastguard Workerif err != expect:
32*7c568831SAndroid Build Coastguard Worker    print("error")
33*7c568831SAndroid Build Coastguard Worker    print("received %s" %(err))
34*7c568831SAndroid Build Coastguard Worker    print("expected %s" %(expect))
35*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
36*7c568831SAndroid Build Coastguard Worker
37*7c568831SAndroid Build Coastguard Workeri = 10000
38*7c568831SAndroid Build Coastguard Workerwhile i > 0:
39*7c568831SAndroid Build Coastguard Worker    try:
40*7c568831SAndroid Build Coastguard Worker        doc = libxml2.parseFile("missing.xml")
41*7c568831SAndroid Build Coastguard Worker    except libxml2.parserError:
42*7c568831SAndroid Build Coastguard Worker        got_exc = 1
43*7c568831SAndroid Build Coastguard Worker    err = ""
44*7c568831SAndroid Build Coastguard Worker    i = i - 1
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Worker# Memory debug specific
47*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
48*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
49*7c568831SAndroid Build Coastguard Worker    print("OK")
50*7c568831SAndroid Build Coastguard Workerelse:
51*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
52