mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-21 14:53:44 +03:00
applied patch from Malcolm Tredinnick fixing bug #154294 related to saving
* python/generator.py python/libxml.c python/tests/outbuf.py: applied patch from Malcolm Tredinnick fixing bug #154294 related to saving to python file objects. Daniel
This commit is contained in:
@@ -3,31 +3,103 @@ import sys
|
||||
import libxml2
|
||||
import StringIO
|
||||
|
||||
#print "Skipped"
|
||||
#sys.exit(1)
|
||||
def testSimpleBufferWrites():
|
||||
f = StringIO.StringIO()
|
||||
buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
|
||||
buf.write(3, "foo")
|
||||
buf.writeString("bar")
|
||||
buf.close()
|
||||
|
||||
if f.getvalue() != "foobar":
|
||||
print "Failed to save to StringIO"
|
||||
sys.exit(1)
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.debugMemory(1)
|
||||
def testSaveDocToBuffer():
|
||||
"""
|
||||
Regression test for bug #154294.
|
||||
"""
|
||||
input = '<foo>Hello</foo>'
|
||||
expected = '''\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<foo>Hello</foo>
|
||||
'''
|
||||
f = StringIO.StringIO()
|
||||
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
||||
doc = libxml2.parseDoc(input)
|
||||
doc.saveFileTo(buf, 'UTF-8')
|
||||
doc.freeDoc()
|
||||
if f.getvalue() != expected:
|
||||
print 'xmlDoc.saveFileTo() call failed.'
|
||||
print ' got: %s' % repr(f.getvalue())
|
||||
print 'expected: %s' % repr(expected)
|
||||
sys.exit(1)
|
||||
|
||||
#f = open('res', 'w')
|
||||
f = StringIO.StringIO()
|
||||
buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
|
||||
buf.write(3, "foo")
|
||||
buf.writeString("bar")
|
||||
buf.close()
|
||||
def testSaveFormattedDocToBuffer():
|
||||
input = '<outer><inner>Some text</inner><inner/></outer>'
|
||||
# The formatted and non-formatted versions of the output.
|
||||
expected = ('''\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<outer><inner>Some text</inner><inner/></outer>
|
||||
''', '''\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<outer>
|
||||
<inner>Some text</inner>
|
||||
<inner/>
|
||||
</outer>
|
||||
''')
|
||||
doc = libxml2.parseDoc(input)
|
||||
for i in (0, 1):
|
||||
f = StringIO.StringIO()
|
||||
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
||||
doc.saveFormatFileTo(buf, 'UTF-8', i)
|
||||
if f.getvalue() != expected[i]:
|
||||
print 'xmlDoc.saveFormatFileTo() call failed.'
|
||||
print ' got: %s' % repr(f.getvalue())
|
||||
print 'expected: %s' % repr(expected[i])
|
||||
sys.exit(1)
|
||||
doc.freeDoc()
|
||||
|
||||
if f.getvalue() != "foobar":
|
||||
print "Failed to save to StringIO"
|
||||
sys.exit(1)
|
||||
def testSaveIntoOutputBuffer():
|
||||
"""
|
||||
Similar to the previous two tests, except this time we invoke the save
|
||||
methods on the output buffer object and pass in an XML node object.
|
||||
"""
|
||||
input = '<foo>Hello</foo>'
|
||||
expected = '''\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<foo>Hello</foo>
|
||||
'''
|
||||
f = StringIO.StringIO()
|
||||
doc = libxml2.parseDoc(input)
|
||||
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
||||
buf.saveFileTo(doc, 'UTF-8')
|
||||
if f.getvalue() != expected:
|
||||
print 'outputBuffer.saveFileTo() call failed.'
|
||||
print ' got: %s' % repr(f.getvalue())
|
||||
print 'expected: %s' % repr(expected)
|
||||
sys.exit(1)
|
||||
f = StringIO.StringIO()
|
||||
buf = libxml2.createOutputBuffer(f, 'UTF-8')
|
||||
buf.saveFormatFileTo(doc, 'UTF-8', 1)
|
||||
if f.getvalue() != expected:
|
||||
print 'outputBuffer.saveFormatFileTo() call failed.'
|
||||
print ' got: %s' % repr(f.getvalue())
|
||||
print 'expected: %s' % repr(expected)
|
||||
sys.exit(1)
|
||||
doc.freeDoc()
|
||||
|
||||
del buf
|
||||
del f
|
||||
if __name__ == '__main__':
|
||||
# Memory debug specific
|
||||
libxml2.debugMemory(1)
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.cleanupParser()
|
||||
if libxml2.debugMemory(1) == 0:
|
||||
print "OK"
|
||||
else:
|
||||
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
|
||||
libxml2.dumpMemory()
|
||||
testSimpleBufferWrites()
|
||||
testSaveDocToBuffer()
|
||||
testSaveFormattedDocToBuffer()
|
||||
testSaveIntoOutputBuffer()
|
||||
|
||||
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