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