mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2024-12-24 21:33:51 +03:00
bf4a8f0ea8
Need fixing on the Capsule usage, the lack of PyBytes, lack of io module and the way to access exception details.
102 lines
1.7 KiB
Python
Executable File
102 lines
1.7 KiB
Python
Executable File
#!/usr/bin/python -u
|
|
#
|
|
# this tests the entities substitutions with the XmlTextReader interface
|
|
#
|
|
import sys
|
|
import libxml2
|
|
|
|
# Memory debug specific
|
|
libxml2.debugMemory(1)
|
|
|
|
result = ""
|
|
def processNode(reader):
|
|
global result
|
|
|
|
result = result + "%d %d %s %d\n" % (reader.Depth(), reader.NodeType(),
|
|
reader.Name(), reader.IsEmptyElement())
|
|
|
|
#
|
|
# Parse a document testing the readerForxxx API
|
|
#
|
|
docstr="""<foo>
|
|
<label>some text</label>
|
|
<item>100</item>
|
|
</foo>"""
|
|
expect="""0 1 foo 0
|
|
1 14 #text 0
|
|
1 1 label 0
|
|
2 3 #text 0
|
|
1 15 label 0
|
|
1 14 #text 0
|
|
1 1 item 0
|
|
2 3 #text 0
|
|
1 15 item 0
|
|
1 14 #text 0
|
|
0 15 foo 0
|
|
"""
|
|
result = ""
|
|
|
|
reader = libxml2.readerForDoc(docstr, "test1", None, 0)
|
|
ret = reader.Read()
|
|
while ret == 1:
|
|
processNode(reader)
|
|
ret = reader.Read()
|
|
|
|
if ret != 0:
|
|
print("Error parsing the document test1")
|
|
sys.exit(1)
|
|
|
|
if result != expect:
|
|
print("Unexpected result for test1")
|
|
print(result)
|
|
sys.exit(1)
|
|
|
|
#
|
|
# Reuse the reader for another document testing the ReaderNewxxx API
|
|
#
|
|
docstr="""<foo>
|
|
<label>some text</label>
|
|
<item>1000</item>
|
|
</foo>"""
|
|
expect="""0 1 foo 0
|
|
1 14 #text 0
|
|
1 1 label 0
|
|
2 3 #text 0
|
|
1 15 label 0
|
|
1 14 #text 0
|
|
1 1 item 0
|
|
2 3 #text 0
|
|
1 15 item 0
|
|
1 14 #text 0
|
|
0 15 foo 0
|
|
"""
|
|
result = ""
|
|
|
|
reader.NewDoc(docstr, "test2", None, 0)
|
|
ret = reader.Read()
|
|
while ret == 1:
|
|
processNode(reader)
|
|
ret = reader.Read()
|
|
|
|
if ret != 0:
|
|
print("Error parsing the document test2")
|
|
sys.exit(1)
|
|
|
|
if result != expect:
|
|
print("Unexpected result for test2")
|
|
print(result)
|
|
sys.exit(1)
|
|
|
|
#
|
|
# cleanup
|
|
#
|
|
del reader
|
|
|
|
# Memory debug specific
|
|
libxml2.cleanupParser()
|
|
if libxml2.debugMemory(1) == 0:
|
|
print("OK")
|
|
else:
|
|
print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
|
|
libxml2.dumpMemory()
|