xref: /aosp_15_r20/external/libxml2/python/tests/validate.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*7c568831SAndroid Build Coastguard Workerimport sys
3*7c568831SAndroid Build Coastguard Workerimport setup_test
4*7c568831SAndroid Build Coastguard Workerimport libxml2
5*7c568831SAndroid Build Coastguard Worker
6*7c568831SAndroid Build Coastguard Worker# Memory debug specific
7*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1)
8*7c568831SAndroid Build Coastguard Worker
9*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createFileParserCtxt("valid.xml")
10*7c568831SAndroid Build Coastguard Workerctxt.validate(1)
11*7c568831SAndroid Build Coastguard Workerctxt.parseDocument()
12*7c568831SAndroid Build Coastguard Workerdoc = ctxt.doc()
13*7c568831SAndroid Build Coastguard Workervalid = ctxt.isValid()
14*7c568831SAndroid Build Coastguard Worker
15*7c568831SAndroid Build Coastguard Workerif doc.name != "valid.xml":
16*7c568831SAndroid Build Coastguard Worker    print("doc.name failed")
17*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
18*7c568831SAndroid Build Coastguard Workerroot = doc.children
19*7c568831SAndroid Build Coastguard Workerif root.name != "doc":
20*7c568831SAndroid Build Coastguard Worker    print("root.name failed")
21*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
22*7c568831SAndroid Build Coastguard Workerif valid != 1:
23*7c568831SAndroid Build Coastguard Worker    print("validity check failed")
24*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
25*7c568831SAndroid Build Coastguard Workerdoc.freeDoc()
26*7c568831SAndroid Build Coastguard Worker
27*7c568831SAndroid Build Coastguard Workeri = 1000
28*7c568831SAndroid Build Coastguard Workerwhile i > 0:
29*7c568831SAndroid Build Coastguard Worker    ctxt = libxml2.createFileParserCtxt("valid.xml")
30*7c568831SAndroid Build Coastguard Worker    ctxt.validate(1)
31*7c568831SAndroid Build Coastguard Worker    ctxt.parseDocument()
32*7c568831SAndroid Build Coastguard Worker    doc = ctxt.doc()
33*7c568831SAndroid Build Coastguard Worker    valid = ctxt.isValid()
34*7c568831SAndroid Build Coastguard Worker    doc.freeDoc()
35*7c568831SAndroid Build Coastguard Worker    if valid != 1:
36*7c568831SAndroid Build Coastguard Worker        print("validity check failed")
37*7c568831SAndroid Build Coastguard Worker        sys.exit(1)
38*7c568831SAndroid Build Coastguard Worker    i = i - 1
39*7c568831SAndroid Build Coastguard Worker
40*7c568831SAndroid Build Coastguard Worker#deactivate error messages from the validation
41*7c568831SAndroid Build Coastguard Workerdef noerr(ctx, str):
42*7c568831SAndroid Build Coastguard Worker    pass
43*7c568831SAndroid Build Coastguard Worker
44*7c568831SAndroid Build Coastguard Workerlibxml2.registerErrorHandler(noerr, None)
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Workerctxt = libxml2.createFileParserCtxt("invalid.xml")
47*7c568831SAndroid Build Coastguard Workerctxt.validate(1)
48*7c568831SAndroid Build Coastguard Workerctxt.parseDocument()
49*7c568831SAndroid Build Coastguard Workerdoc = ctxt.doc()
50*7c568831SAndroid Build Coastguard Workervalid = ctxt.isValid()
51*7c568831SAndroid Build Coastguard Workerif doc.name != "invalid.xml":
52*7c568831SAndroid Build Coastguard Worker    print("doc.name failed")
53*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
54*7c568831SAndroid Build Coastguard Workerroot = doc.children
55*7c568831SAndroid Build Coastguard Workerif root.name != "doc":
56*7c568831SAndroid Build Coastguard Worker    print("root.name failed")
57*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
58*7c568831SAndroid Build Coastguard Workerif valid != 0:
59*7c568831SAndroid Build Coastguard Worker    print("validity check failed")
60*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
61*7c568831SAndroid Build Coastguard Workerdoc.freeDoc()
62*7c568831SAndroid Build Coastguard Worker
63*7c568831SAndroid Build Coastguard Workeri = 1000
64*7c568831SAndroid Build Coastguard Workerwhile i > 0:
65*7c568831SAndroid Build Coastguard Worker    ctxt = libxml2.createFileParserCtxt("invalid.xml")
66*7c568831SAndroid Build Coastguard Worker    ctxt.validate(1)
67*7c568831SAndroid Build Coastguard Worker    ctxt.parseDocument()
68*7c568831SAndroid Build Coastguard Worker    doc = ctxt.doc()
69*7c568831SAndroid Build Coastguard Worker    valid = ctxt.isValid()
70*7c568831SAndroid Build Coastguard Worker    doc.freeDoc()
71*7c568831SAndroid Build Coastguard Worker    if valid != 0:
72*7c568831SAndroid Build Coastguard Worker        print("validity check failed")
73*7c568831SAndroid Build Coastguard Worker        sys.exit(1)
74*7c568831SAndroid Build Coastguard Worker    i = i - 1
75*7c568831SAndroid Build Coastguard Workerdel ctxt
76*7c568831SAndroid Build Coastguard Worker
77*7c568831SAndroid Build Coastguard Worker# Memory debug specific
78*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
79*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
80*7c568831SAndroid Build Coastguard Worker    print("OK")
81*7c568831SAndroid Build Coastguard Workerelse:
82*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
83