Fixed mixed text and elements bug in tostring.

XML of the form <a>foo <b>bar</b> baz</a> was outputted as
<a>foo <b>bar</b> baz baz</a>.

Includes unit test.
This commit is contained in:
Lance Stout 2010-10-21 16:21:28 -04:00
parent d88999691c
commit 8f55704928
2 changed files with 10 additions and 3 deletions

View file

@ -68,9 +68,6 @@ def tostring(xml=None, xmlns='', stanza_ns='', stream=None, outbuffer=''):
for child in xml.getchildren():
output.append(tostring(child, tag_xmlns, stanza_ns, stream))
output.append(u"</%s>" % tag_name)
if xml.tail:
# If there is additional text after the element.
output.append(xml_escape(xml.tail))
elif xml.text:
# If we only have text content.
output.append(u">%s</%s>" % (xml_escape(xml.text), tag_name))

View file

@ -73,6 +73,16 @@ class TestToString(SleekTest):
message="The xmlns parameter was not used properly.",
xmlns='foo')
def testTailContent(self):
"""
Test that elements of the form <a>foo <b>bar</b> baz</a> only
include " baz" once.
"""
self.tryTostring(
original='<a>foo <b>bar</b> baz</a>',
message='Element tail content is incorrect.')
def testStanzaNs(self):
"""
Test using the stanza_ns tostring parameter, which will prevent