|
Packit Service |
a31ea6 |
#!/usr/bin/python -u
|
|
Packit Service |
a31ea6 |
import sys
|
|
Packit Service |
a31ea6 |
import libxml2
|
|
Packit Service |
a31ea6 |
try:
|
|
Packit Service |
a31ea6 |
import StringIO
|
|
Packit Service |
a31ea6 |
str_io = StringIO.StringIO
|
|
Packit Service |
a31ea6 |
except:
|
|
Packit Service |
a31ea6 |
import io
|
|
Packit Service |
a31ea6 |
str_io = io.StringIO
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
def testSimpleBufferWrites():
|
|
Packit Service |
a31ea6 |
f = str_io()
|
|
Packit Service |
a31ea6 |
buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
|
|
Packit Service |
a31ea6 |
buf.write(3, "foo")
|
|
Packit Service |
a31ea6 |
buf.writeString("bar")
|
|
Packit Service |
a31ea6 |
buf.close()
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
if f.getvalue() != "foobar":
|
|
Packit Service |
a31ea6 |
print("Failed to save to StringIO")
|
|
Packit Service |
a31ea6 |
sys.exit(1)
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
def testSaveDocToBuffer():
|
|
Packit Service |
a31ea6 |
"""
|
|
Packit Service |
a31ea6 |
Regression test for bug #154294.
|
|
Packit Service |
a31ea6 |
"""
|
|
Packit Service |
a31ea6 |
input = '<foo>Hello</foo>'
|
|
Packit Service |
a31ea6 |
expected = '''\
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
<foo>Hello</foo>
|
|
Packit Service |
a31ea6 |
'''
|
|
Packit Service |
a31ea6 |
f = str_io()
|
|
Packit Service |
a31ea6 |
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
|
Packit Service |
a31ea6 |
doc = libxml2.parseDoc(input)
|
|
Packit Service |
a31ea6 |
doc.saveFileTo(buf, 'UTF-8')
|
|
Packit Service |
a31ea6 |
doc.freeDoc()
|
|
Packit Service |
a31ea6 |
if f.getvalue() != expected:
|
|
Packit Service |
a31ea6 |
print('xmlDoc.saveFileTo() call failed.')
|
|
Packit Service |
a31ea6 |
print(' got: %s' % repr(f.getvalue()))
|
|
Packit Service |
a31ea6 |
print('expected: %s' % repr(expected))
|
|
Packit Service |
a31ea6 |
sys.exit(1)
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
def testSaveFormattedDocToBuffer():
|
|
Packit Service |
a31ea6 |
input = '<outer><inner>Some text</inner><inner/></outer>'
|
|
Packit Service |
a31ea6 |
# The formatted and non-formatted versions of the output.
|
|
Packit Service |
a31ea6 |
expected = ('''\
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
<outer><inner>Some text</inner><inner/></outer>
|
|
Packit Service |
a31ea6 |
''', '''\
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
<outer>
|
|
Packit Service |
a31ea6 |
<inner>Some text</inner>
|
|
Packit Service |
a31ea6 |
<inner/>
|
|
Packit Service |
a31ea6 |
</outer>
|
|
Packit Service |
a31ea6 |
''')
|
|
Packit Service |
a31ea6 |
doc = libxml2.parseDoc(input)
|
|
Packit Service |
a31ea6 |
for i in (0, 1):
|
|
Packit Service |
a31ea6 |
f = str_io()
|
|
Packit Service |
a31ea6 |
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
|
Packit Service |
a31ea6 |
doc.saveFormatFileTo(buf, 'UTF-8', i)
|
|
Packit Service |
a31ea6 |
if f.getvalue() != expected[i]:
|
|
Packit Service |
a31ea6 |
print('xmlDoc.saveFormatFileTo() call failed.')
|
|
Packit Service |
a31ea6 |
print(' got: %s' % repr(f.getvalue()))
|
|
Packit Service |
a31ea6 |
print('expected: %s' % repr(expected[i]))
|
|
Packit Service |
a31ea6 |
sys.exit(1)
|
|
Packit Service |
a31ea6 |
doc.freeDoc()
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
def testSaveIntoOutputBuffer():
|
|
Packit Service |
a31ea6 |
"""
|
|
Packit Service |
a31ea6 |
Similar to the previous two tests, except this time we invoke the save
|
|
Packit Service |
a31ea6 |
methods on the output buffer object and pass in an XML node object.
|
|
Packit Service |
a31ea6 |
"""
|
|
Packit Service |
a31ea6 |
input = '<foo>Hello</foo>'
|
|
Packit Service |
a31ea6 |
expected = '''\
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
<foo>Hello</foo>
|
|
Packit Service |
a31ea6 |
'''
|
|
Packit Service |
a31ea6 |
f = str_io()
|
|
Packit Service |
a31ea6 |
doc = libxml2.parseDoc(input)
|
|
Packit Service |
a31ea6 |
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
|
Packit Service |
a31ea6 |
buf.saveFileTo(doc, 'UTF-8')
|
|
Packit Service |
a31ea6 |
if f.getvalue() != expected:
|
|
Packit Service |
a31ea6 |
print('outputBuffer.saveFileTo() call failed.')
|
|
Packit Service |
a31ea6 |
print(' got: %s' % repr(f.getvalue()))
|
|
Packit Service |
a31ea6 |
print('expected: %s' % repr(expected))
|
|
Packit Service |
a31ea6 |
sys.exit(1)
|
|
Packit Service |
a31ea6 |
f = str_io()
|
|
Packit Service |
a31ea6 |
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
|
Packit Service |
a31ea6 |
buf.saveFormatFileTo(doc, 'UTF-8', 1)
|
|
Packit Service |
a31ea6 |
if f.getvalue() != expected:
|
|
Packit Service |
a31ea6 |
print('outputBuffer.saveFormatFileTo() call failed.')
|
|
Packit Service |
a31ea6 |
print(' got: %s' % repr(f.getvalue()))
|
|
Packit Service |
a31ea6 |
print('expected: %s' % repr(expected))
|
|
Packit Service |
a31ea6 |
sys.exit(1)
|
|
Packit Service |
a31ea6 |
doc.freeDoc()
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
if __name__ == '__main__':
|
|
Packit Service |
a31ea6 |
# Memory debug specific
|
|
Packit Service |
a31ea6 |
libxml2.debugMemory(1)
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
testSimpleBufferWrites()
|
|
Packit Service |
a31ea6 |
testSaveDocToBuffer()
|
|
Packit Service |
a31ea6 |
testSaveFormattedDocToBuffer()
|
|
Packit Service |
a31ea6 |
testSaveIntoOutputBuffer()
|
|
Packit Service |
a31ea6 |
|
|
Packit Service |
a31ea6 |
libxml2.cleanupParser()
|
|
Packit Service |
a31ea6 |
if libxml2.debugMemory(1) == 0:
|
|
Packit Service |
a31ea6 |
print("OK")
|
|
Packit Service |
a31ea6 |
else:
|
|
Packit Service |
a31ea6 |
print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
|
|
Packit Service |
a31ea6 |
libxml2.dumpMemory()
|