xref: /aosp_15_r20/external/libxml2/python/tests/pushSAXhtml.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 Workerlog = ""
10*7c568831SAndroid Build Coastguard Worker
11*7c568831SAndroid Build Coastguard Workerclass callback:
12*7c568831SAndroid Build Coastguard Worker    def startDocument(self):
13*7c568831SAndroid Build Coastguard Worker        global log
14*7c568831SAndroid Build Coastguard Worker        log = log + "startDocument:"
15*7c568831SAndroid Build Coastguard Worker
16*7c568831SAndroid Build Coastguard Worker    def endDocument(self):
17*7c568831SAndroid Build Coastguard Worker        global log
18*7c568831SAndroid Build Coastguard Worker        log = log + "endDocument:"
19*7c568831SAndroid Build Coastguard Worker
20*7c568831SAndroid Build Coastguard Worker    def startElement(self, tag, attrs):
21*7c568831SAndroid Build Coastguard Worker        global log
22*7c568831SAndroid Build Coastguard Worker        log = log + "startElement %s %s:" % (tag, attrs)
23*7c568831SAndroid Build Coastguard Worker
24*7c568831SAndroid Build Coastguard Worker    def endElement(self, tag):
25*7c568831SAndroid Build Coastguard Worker        global log
26*7c568831SAndroid Build Coastguard Worker        log = log + "endElement %s:" % (tag)
27*7c568831SAndroid Build Coastguard Worker
28*7c568831SAndroid Build Coastguard Worker    def characters(self, data):
29*7c568831SAndroid Build Coastguard Worker        global log
30*7c568831SAndroid Build Coastguard Worker        log = log + "characters: %s:" % (data)
31*7c568831SAndroid Build Coastguard Worker
32*7c568831SAndroid Build Coastguard Worker    def warning(self, msg):
33*7c568831SAndroid Build Coastguard Worker        global log
34*7c568831SAndroid Build Coastguard Worker        log = log + "warning: %s:" % (msg)
35*7c568831SAndroid Build Coastguard Worker
36*7c568831SAndroid Build Coastguard Worker    def error(self, msg):
37*7c568831SAndroid Build Coastguard Worker        global log
38*7c568831SAndroid Build Coastguard Worker        log = log + "error: %s:" % (msg)
39*7c568831SAndroid Build Coastguard Worker
40*7c568831SAndroid Build Coastguard Worker    def fatalError(self, msg):
41*7c568831SAndroid Build Coastguard Worker        global log
42*7c568831SAndroid Build Coastguard Worker        log = log + "fatalError: %s:" % (msg)
43*7c568831SAndroid Build Coastguard Worker
44*7c568831SAndroid Build Coastguard Workerhandler = callback()
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Workerctxt = libxml2.htmlCreatePushParser(handler, "<foo", 4, "test.xml")
47*7c568831SAndroid Build Coastguard Workerchunk = " url='tst'>b"
48*7c568831SAndroid Build Coastguard Workerctxt.htmlParseChunk(chunk, len(chunk), 0)
49*7c568831SAndroid Build Coastguard Workerchunk = "ar</foo>"
50*7c568831SAndroid Build Coastguard Workerctxt.htmlParseChunk(chunk, len(chunk), 1)
51*7c568831SAndroid Build Coastguard Workerctxt=None
52*7c568831SAndroid Build Coastguard Worker
53*7c568831SAndroid Build Coastguard Workerreference = """startDocument:startElement html None:startElement body None:startElement foo {'url': 'tst'}:characters: bar:endElement foo:endElement body:endElement html:endDocument:"""
54*7c568831SAndroid Build Coastguard Workerif log != reference:
55*7c568831SAndroid Build Coastguard Worker    print("Error got: %s" % log)
56*7c568831SAndroid Build Coastguard Worker    print("Exprected: %s" % reference)
57*7c568831SAndroid Build Coastguard Worker    sys.exit(1)
58*7c568831SAndroid Build Coastguard Worker
59*7c568831SAndroid Build Coastguard Worker# Memory debug specific
60*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser()
61*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0:
62*7c568831SAndroid Build Coastguard Worker    print("OK")
63*7c568831SAndroid Build Coastguard Workerelse:
64*7c568831SAndroid Build Coastguard Worker    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
65