mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-23 01:52:48 +03:00
update all tests for Python3 and Python2
This commit is contained in:
@@ -4,91 +4,96 @@
|
||||
# this tests the basic APIs of the XmlTextReader interface
|
||||
#
|
||||
import libxml2
|
||||
import StringIO
|
||||
import sys
|
||||
try:
|
||||
import StringIO
|
||||
str_io = StringIO.StringIO
|
||||
except:
|
||||
import io
|
||||
str_io = io.StringIO
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.debugMemory(1)
|
||||
|
||||
f = StringIO.StringIO("""<a><b b1="b1"/><c>content of c</c></a>""")
|
||||
f = str_io("""<a><b b1="b1"/><c>content of c</c></a>""")
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("test1")
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test1: Error reading to first element"
|
||||
print("test1: Error reading to first element")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
|
||||
reader.NodeType() != 1 or reader.HasAttributes() != 0:
|
||||
print "test1: Error reading the first element"
|
||||
print("test1: Error reading the first element")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test1: Error reading to second element"
|
||||
print("test1: Error reading to second element")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "b" or reader.IsEmptyElement() != 1 or \
|
||||
reader.NodeType() != 1 or reader.HasAttributes() != 1:
|
||||
print "test1: Error reading the second element"
|
||||
print("test1: Error reading the second element")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test1: Error reading to third element"
|
||||
print("test1: Error reading to third element")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \
|
||||
reader.NodeType() != 1 or reader.HasAttributes() != 0:
|
||||
print "test1: Error reading the third element"
|
||||
print("test1: Error reading the third element")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test1: Error reading to text node"
|
||||
print("test1: Error reading to text node")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "#text" or reader.IsEmptyElement() != 0 or \
|
||||
reader.NodeType() != 3 or reader.HasAttributes() != 0 or \
|
||||
reader.Value() != "content of c":
|
||||
print "test1: Error reading the text node"
|
||||
print("test1: Error reading the text node")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test1: Error reading to end of third element"
|
||||
print("test1: Error reading to end of third element")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \
|
||||
reader.NodeType() != 15 or reader.HasAttributes() != 0:
|
||||
print "test1: Error reading the end of third element"
|
||||
print("test1: Error reading the end of third element")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test1: Error reading to end of first element"
|
||||
print("test1: Error reading to end of first element")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
|
||||
reader.NodeType() != 15 or reader.HasAttributes() != 0:
|
||||
print "test1: Error reading the end of first element"
|
||||
print("test1: Error reading the end of first element")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 0:
|
||||
print "test1: Error reading to end of document"
|
||||
print("test1: Error reading to end of document")
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
# example from the XmlTextReader docs
|
||||
#
|
||||
f = StringIO.StringIO("""<test xmlns:dt="urn:datatypes" dt:type="int"/>""")
|
||||
f = str_io("""<test xmlns:dt="urn:datatypes" dt:type="int"/>""")
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("test2")
|
||||
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "Error reading test element"
|
||||
print("Error reading test element")
|
||||
sys.exit(1)
|
||||
if reader.GetAttributeNo(0) != "urn:datatypes" or \
|
||||
reader.GetAttributeNo(1) != "int" or \
|
||||
reader.GetAttributeNs("type", "urn:datatypes") != "int" or \
|
||||
reader.GetAttribute("dt:type") != "int":
|
||||
print "error reading test attributes"
|
||||
print("error reading test attributes")
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
# example from the XmlTextReader docs
|
||||
#
|
||||
f = StringIO.StringIO("""<root xmlns:a="urn:456">
|
||||
f = str_io("""<root xmlns:a="urn:456">
|
||||
<item>
|
||||
<ref href="a:b"/>
|
||||
</item>
|
||||
@@ -100,203 +105,203 @@ ret = reader.Read()
|
||||
while ret == 1:
|
||||
if reader.Name() == "ref":
|
||||
if reader.LookupNamespace("a") != "urn:456":
|
||||
print "error resolving namespace prefix"
|
||||
print("error resolving namespace prefix")
|
||||
sys.exit(1)
|
||||
break
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "Error finding the ref element"
|
||||
print("Error finding the ref element")
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
# Home made example for the various attribute access functions
|
||||
#
|
||||
f = StringIO.StringIO("""<testattr xmlns="urn:1" xmlns:a="urn:2" b="b" a:b="a:b"/>""")
|
||||
f = str_io("""<testattr xmlns="urn:1" xmlns:a="urn:2" b="b" a:b="a:b"/>""")
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("test4")
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "Error reading the testattr element"
|
||||
print("Error reading the testattr element")
|
||||
sys.exit(1)
|
||||
#
|
||||
# Attribute exploration by index
|
||||
#
|
||||
if reader.MoveToAttributeNo(0) != 1:
|
||||
print "Failed moveToAttribute(0)"
|
||||
print("Failed moveToAttribute(0)")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "urn:1":
|
||||
print "Failed to read attribute(0)"
|
||||
print("Failed to read attribute(0)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "xmlns":
|
||||
print "Failed to read attribute(0) name"
|
||||
print("Failed to read attribute(0) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttributeNo(1) != 1:
|
||||
print "Failed moveToAttribute(1)"
|
||||
print("Failed moveToAttribute(1)")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "urn:2":
|
||||
print "Failed to read attribute(1)"
|
||||
print("Failed to read attribute(1)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "xmlns:a":
|
||||
print "Failed to read attribute(1) name"
|
||||
print("Failed to read attribute(1) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttributeNo(2) != 1:
|
||||
print "Failed moveToAttribute(2)"
|
||||
print("Failed moveToAttribute(2)")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "b":
|
||||
print "Failed to read attribute(2)"
|
||||
print("Failed to read attribute(2)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "b":
|
||||
print "Failed to read attribute(2) name"
|
||||
print("Failed to read attribute(2) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttributeNo(3) != 1:
|
||||
print "Failed moveToAttribute(3)"
|
||||
print("Failed moveToAttribute(3)")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "a:b":
|
||||
print "Failed to read attribute(3)"
|
||||
print("Failed to read attribute(3)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "a:b":
|
||||
print "Failed to read attribute(3) name"
|
||||
print("Failed to read attribute(3) name")
|
||||
sys.exit(1)
|
||||
#
|
||||
# Attribute exploration by name
|
||||
#
|
||||
if reader.MoveToAttribute("xmlns") != 1:
|
||||
print "Failed moveToAttribute('xmlns')"
|
||||
print("Failed moveToAttribute('xmlns')")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "urn:1":
|
||||
print "Failed to read attribute('xmlns')"
|
||||
print("Failed to read attribute('xmlns')")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttribute("xmlns:a") != 1:
|
||||
print "Failed moveToAttribute('xmlns')"
|
||||
print("Failed moveToAttribute('xmlns')")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "urn:2":
|
||||
print "Failed to read attribute('xmlns:a')"
|
||||
print("Failed to read attribute('xmlns:a')")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttribute("b") != 1:
|
||||
print "Failed moveToAttribute('b')"
|
||||
print("Failed moveToAttribute('b')")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "b":
|
||||
print "Failed to read attribute('b')"
|
||||
print("Failed to read attribute('b')")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttribute("a:b") != 1:
|
||||
print "Failed moveToAttribute('a:b')"
|
||||
print("Failed moveToAttribute('a:b')")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "a:b":
|
||||
print "Failed to read attribute('a:b')"
|
||||
print("Failed to read attribute('a:b')")
|
||||
sys.exit(1)
|
||||
if reader.MoveToAttributeNs("b", "urn:2") != 1:
|
||||
print "Failed moveToAttribute('b', 'urn:2')"
|
||||
print("Failed moveToAttribute('b', 'urn:2')")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "a:b":
|
||||
print "Failed to read attribute('b', 'urn:2')"
|
||||
print("Failed to read attribute('b', 'urn:2')")
|
||||
sys.exit(1)
|
||||
#
|
||||
# Go back and read in sequence
|
||||
#
|
||||
if reader.MoveToElement() != 1:
|
||||
print "Failed to move back to element"
|
||||
print("Failed to move back to element")
|
||||
sys.exit(1)
|
||||
if reader.MoveToFirstAttribute() != 1:
|
||||
print "Failed to move to first attribute"
|
||||
print("Failed to move to first attribute")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "urn:1":
|
||||
print "Failed to read attribute(0)"
|
||||
print("Failed to read attribute(0)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "xmlns":
|
||||
print "Failed to read attribute(0) name"
|
||||
print("Failed to read attribute(0) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToNextAttribute() != 1:
|
||||
print "Failed to move to next attribute"
|
||||
print("Failed to move to next attribute")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "urn:2":
|
||||
print "Failed to read attribute(1)"
|
||||
print("Failed to read attribute(1)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "xmlns:a":
|
||||
print "Failed to read attribute(1) name"
|
||||
print("Failed to read attribute(1) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToNextAttribute() != 1:
|
||||
print "Failed to move to next attribute"
|
||||
print("Failed to move to next attribute")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "b":
|
||||
print "Failed to read attribute(2)"
|
||||
print("Failed to read attribute(2)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "b":
|
||||
print "Failed to read attribute(2) name"
|
||||
print("Failed to read attribute(2) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToNextAttribute() != 1:
|
||||
print "Failed to move to next attribute"
|
||||
print("Failed to move to next attribute")
|
||||
sys.exit(1)
|
||||
if reader.Value() != "a:b":
|
||||
print "Failed to read attribute(3)"
|
||||
print("Failed to read attribute(3)")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "a:b":
|
||||
print "Failed to read attribute(3) name"
|
||||
print("Failed to read attribute(3) name")
|
||||
sys.exit(1)
|
||||
if reader.MoveToNextAttribute() != 0:
|
||||
print "Failed to detect last attribute"
|
||||
print("Failed to detect last attribute")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
#
|
||||
# a couple of tests for namespace nodes
|
||||
#
|
||||
f = StringIO.StringIO("""<a xmlns="http://example.com/foo"/>""")
|
||||
f = str_io("""<a xmlns="http://example.com/foo"/>""")
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("test6")
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test6: failed to Read()"
|
||||
print("test6: failed to Read()")
|
||||
sys.exit(1)
|
||||
ret = reader.MoveToFirstAttribute()
|
||||
if ret != 1:
|
||||
print "test6: failed to MoveToFirstAttribute()"
|
||||
print("test6: failed to MoveToFirstAttribute()")
|
||||
sys.exit(1)
|
||||
if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \
|
||||
reader.LocalName() != "xmlns" or reader.Name() != "xmlns" or \
|
||||
reader.Value() != "http://example.com/foo" or reader.NodeType() != 2:
|
||||
print "test6: failed to read the namespace node"
|
||||
print("test6: failed to read the namespace node")
|
||||
sys.exit(1)
|
||||
|
||||
f = StringIO.StringIO("""<a xmlns:prefix="http://example.com/foo"/>""")
|
||||
f = str_io("""<a xmlns:prefix="http://example.com/foo"/>""")
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("test7")
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test7: failed to Read()"
|
||||
print("test7: failed to Read()")
|
||||
sys.exit(1)
|
||||
ret = reader.MoveToFirstAttribute()
|
||||
if ret != 1:
|
||||
print "test7: failed to MoveToFirstAttribute()"
|
||||
print("test7: failed to MoveToFirstAttribute()")
|
||||
sys.exit(1)
|
||||
if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \
|
||||
reader.LocalName() != "prefix" or reader.Name() != "xmlns:prefix" or \
|
||||
reader.Value() != "http://example.com/foo" or reader.NodeType() != 2:
|
||||
print "test7: failed to read the namespace node"
|
||||
print("test7: failed to read the namespace node")
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
# Test for a limit case:
|
||||
#
|
||||
f = StringIO.StringIO("""<a/>""")
|
||||
f = str_io("""<a/>""")
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("test8")
|
||||
ret = reader.Read()
|
||||
if ret != 1:
|
||||
print "test8: failed to read the node"
|
||||
print("test8: failed to read the node")
|
||||
sys.exit(1)
|
||||
if reader.Name() != "a" or reader.IsEmptyElement() != 1:
|
||||
print "test8: failed to analyze the node"
|
||||
print("test8: failed to analyze the node")
|
||||
sys.exit(1)
|
||||
ret = reader.Read()
|
||||
if ret != 0:
|
||||
print "test8: failed to detect the EOF"
|
||||
print("test8: failed to detect the EOF")
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
# Another test provided by St<53>phane Bidoul and checked with C#
|
||||
#
|
||||
def tst_reader(s):
|
||||
f = StringIO.StringIO(s)
|
||||
f = str_io(s)
|
||||
input = libxml2.inputBuffer(f)
|
||||
reader = input.newTextReader("tst")
|
||||
res = ""
|
||||
@@ -322,8 +327,8 @@ expect="""1 (a) [None] 0 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test5 failed"
|
||||
print res
|
||||
print("test5 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
doc="""<test><b/><c/></test>"""
|
||||
@@ -334,8 +339,8 @@ expect="""1 (test) [None] 0 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test9 failed"
|
||||
print res
|
||||
print("test9 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
doc="""<a><b>bbb</b><c>ccc</c></a>"""
|
||||
@@ -350,8 +355,8 @@ expect="""1 (a) [None] 0 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test10 failed"
|
||||
print res
|
||||
print("test10 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
doc="""<test a="a"/>"""
|
||||
@@ -360,8 +365,8 @@ expect="""1 (test) [None] 1 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test11 failed"
|
||||
print res
|
||||
print("test11 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
doc="""<test><a>aaa</a><b/></test>"""
|
||||
@@ -374,8 +379,8 @@ expect="""1 (test) [None] 0 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test12 failed"
|
||||
print res
|
||||
print("test12 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
doc="""<test><p></p></test>"""
|
||||
@@ -386,8 +391,8 @@ expect="""1 (test) [None] 0 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test13 failed"
|
||||
print res
|
||||
print("test13 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
doc="""<p></p>"""
|
||||
@@ -396,8 +401,8 @@ expect="""1 (p) [None] 0 0
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test14 failed"
|
||||
print res
|
||||
print("test14 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
@@ -421,8 +426,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
"""
|
||||
res = tst_reader(doc)
|
||||
if res != expect:
|
||||
print "test15 failed"
|
||||
print res
|
||||
print("test15 failed")
|
||||
print(res)
|
||||
sys.exit(1)
|
||||
|
||||
#
|
||||
@@ -435,7 +440,7 @@ del reader
|
||||
# Memory debug specific
|
||||
libxml2.cleanupParser()
|
||||
if libxml2.debugMemory(1) == 0:
|
||||
print "OK"
|
||||
print("OK")
|
||||
else:
|
||||
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
|
||||
print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
|
||||
libxml2.dumpMemory()
|
||||
|
||||
Reference in New Issue
Block a user