1: #!/usr/bin/python -u
2: import sys
3: import libxml2
4:
5: # Memory debug specific
6: libxml2.debugMemory(1)
7:
8: log = ""
9:
10: class callback:
11: def startDocument(self):
12: global log
13: log = log + "startDocument:"
14:
15: def endDocument(self):
16: global log
17: log = log + "endDocument:"
18:
19: def startElement(self, tag, attrs):
20: global log
21: log = log + "startElement %s %s:" % (tag, attrs)
22:
23: def endElement(self, tag):
24: global log
25: log = log + "endElement %s:" % (tag)
26:
27: def characters(self, data):
28: global log
29: log = log + "characters: %s:" % (data)
30:
31: def warning(self, msg):
32: global log
33: log = log + "warning: %s:" % (msg)
34:
35: def error(self, msg):
36: global log
37: log = log + "error: %s:" % (msg)
38:
39: def fatalError(self, msg):
40: global log
41: log = log + "fatalError: %s:" % (msg)
42:
43: handler = callback()
44:
45: ctxt = libxml2.htmlCreatePushParser(handler, "<foo", 4, "test.xml")
46: chunk = " url='tst'>b"
47: ctxt.htmlParseChunk(chunk, len(chunk), 0)
48: chunk = "ar</foo>"
49: ctxt.htmlParseChunk(chunk, len(chunk), 1)
50: ctxt=None
51:
52: reference = """startDocument:startElement html None:startElement body None:startElement foo {'url': 'tst'}:error: Tag foo invalid
53: :characters: bar:endElement foo:endElement body:endElement html:endDocument:"""
54: if log != reference:
55: print("Error got: %s" % log)
56: print("Exprected: %s" % reference)
57: sys.exit(1)
58:
59: # Memory debug specific
60: libxml2.cleanupParser()
61: if libxml2.debugMemory(1) == 0:
62: print("OK")
63: else:
64: print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
65: libxml2.dumpMemory()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>