mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-21 14:53:44 +03:00
removing xmldwalk module since it got merged with the xmlreader. cleanup
* Makefile.am configure.in xmldwalk.c xmlreader.c include/libxml/Makefile.am include/libxml/xmldwalk.h include/libxml/xmlversion.h.in: removing xmldwalk module since it got merged with the xmlreader. * parser.c: cleanup * win32/libxml2.def.src python/libxml2class.txt doc/libxml2-api.xml: rebuilt the API * python/tests/Makefile.am python/tests/reader7.py python/tests/walker.py: adding regression testing for the new xmlreader APIs, new APIs for reader creation, including makeing reader "walker" operating on preparsed document trees. Daniel
This commit is contained in:
@@ -303,6 +303,24 @@ def skip_function(name):
|
||||
# the next function is defined in libxml.c
|
||||
if name == "xmlRelaxNGFreeValidCtxt":
|
||||
return 1
|
||||
#
|
||||
# Those are skipped because the Const version is used of the bindings
|
||||
# instead.
|
||||
#
|
||||
if name == "xmlTextReaderBaseUri":
|
||||
return 1
|
||||
if name == "xmlTextReaderLocalName":
|
||||
return 1
|
||||
if name == "xmlTextReaderName":
|
||||
return 1
|
||||
if name == "xmlTextReaderNamespaceUri":
|
||||
return 1
|
||||
if name == "xmlTextReaderPrefix":
|
||||
return 1
|
||||
if name == "xmlTextReaderXmlLang":
|
||||
return 1
|
||||
if name == "xmlTextReaderValue":
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def print_function_wrapper(name, output, export, include):
|
||||
@@ -718,8 +736,12 @@ def nameFixup(name, classe, type, file):
|
||||
func = "regexp" + name[6:]
|
||||
elif name[0:20] == "xmlTextReaderLocator" and file == "xmlreader":
|
||||
func = name[20:]
|
||||
elif name[0:18] == "xmlTextReaderConst" and file == "xmlreader":
|
||||
func = name[18:]
|
||||
elif name[0:13] == "xmlTextReader" and file == "xmlreader":
|
||||
func = name[13:]
|
||||
elif name[0:12] == "xmlReaderNew" and file == "xmlreader":
|
||||
func = name[9:]
|
||||
elif name[0:11] == "xmlACatalog":
|
||||
func = name[11:]
|
||||
func = string.lower(func[0:1]) + func[1:]
|
||||
|
@@ -584,6 +584,10 @@ Class xmlDoc(xmlNode)
|
||||
# functions from module xinclude
|
||||
xincludeProcess()
|
||||
|
||||
# functions from module xmlreader
|
||||
NewWalker()
|
||||
readerWalker()
|
||||
|
||||
# functions from module xpath
|
||||
xpathNewContext()
|
||||
xpathOrderDocElems()
|
||||
@@ -667,13 +671,6 @@ Class xmlTextReader(xmlTextReaderCore)
|
||||
AttributeCount()
|
||||
BaseUri()
|
||||
Close()
|
||||
ConstBaseUri()
|
||||
ConstLocalName()
|
||||
ConstName()
|
||||
ConstNamespaceUri()
|
||||
ConstPrefix()
|
||||
ConstString()
|
||||
ConstXmlLang()
|
||||
CurrentDoc()
|
||||
CurrentNode()
|
||||
Depth()
|
||||
@@ -698,7 +695,13 @@ Class xmlTextReader(xmlTextReaderCore)
|
||||
MoveToNextAttribute()
|
||||
Name()
|
||||
NamespaceUri()
|
||||
NewDoc()
|
||||
NewFd()
|
||||
NewFile()
|
||||
NewMemory()
|
||||
NewWalker()
|
||||
Next()
|
||||
NextSibling()
|
||||
NodeType()
|
||||
Normalization()
|
||||
Prefix()
|
||||
@@ -713,12 +716,9 @@ Class xmlTextReader(xmlTextReaderCore)
|
||||
RelaxNGSetSchema()
|
||||
RelaxNGValidate()
|
||||
SetParserProp()
|
||||
String()
|
||||
Value()
|
||||
XmlLang()
|
||||
readerNewDoc()
|
||||
readerNewFd()
|
||||
readerNewFile()
|
||||
readerNewMemory()
|
||||
Class xmlReg()
|
||||
|
||||
# functions from module xmlregexp
|
||||
|
@@ -26,6 +26,8 @@ PYTESTS= \
|
||||
reader4.py \
|
||||
reader5.py \
|
||||
reader6.py \
|
||||
reader7.py \
|
||||
walker.py \
|
||||
ctxterror.py\
|
||||
readererr.py\
|
||||
relaxng.py \
|
||||
|
102
python/tests/reader7.py
Executable file
102
python/tests/reader7.py
Executable file
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/python -u
|
||||
#
|
||||
# this tests the entities substitutions with the XmlTextReader interface
|
||||
#
|
||||
import sys
|
||||
import StringIO
|
||||
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()
|
145
python/tests/walker.py
Executable file
145
python/tests/walker.py
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/usr/bin/python -u
|
||||
#
|
||||
# this tests the entities substitutions with the XmlTextReader interface
|
||||
#
|
||||
import sys
|
||||
import StringIO
|
||||
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 = ""
|
||||
|
||||
doc = libxml2.parseDoc(docstr)
|
||||
reader = doc.readerWalker();
|
||||
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)
|
||||
|
||||
doc.freeDoc()
|
||||
|
||||
#
|
||||
# Reuse the reader for another document testing the ReaderNewWalker 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 = ""
|
||||
|
||||
doc = libxml2.parseDoc(docstr)
|
||||
reader.NewWalker(doc)
|
||||
|
||||
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)
|
||||
|
||||
doc.freeDoc()
|
||||
|
||||
#
|
||||
# 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, "test3", None, 0)
|
||||
ret = reader.Read()
|
||||
while ret == 1:
|
||||
processNode(reader)
|
||||
ret = reader.Read()
|
||||
|
||||
if ret != 0:
|
||||
print "Error parsing the document test3"
|
||||
sys.exit(1)
|
||||
|
||||
if result != expect:
|
||||
print "Unexpected result for test3"
|
||||
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()
|
Reference in New Issue
Block a user