Blame python/tests/outbuf.py

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()