Opened 13 years ago
Last modified 13 years ago
#429 closed defect
Stream.render bug when strip_whitespace=False — at Initial Version
Reported by: | cboos | Owned by: | cmlenz |
---|---|---|---|
Priority: | major | Milestone: | 0.6.1 |
Component: | Serialization | Version: | 0.6 |
Keywords: | cache | Cc: |
Description
For the context, I noticed that TracHacks:WikiGoodiesPlugin's ShowEntities macro was broken, as it displayed things like:
… | … |
instead of the expected:
… | … |
I traced that to the strip_whitespace parameter of Stream.render:
>>> from genshi.builder import tag >>> from genshi.core import Markup >>> table = tag.table(tag.tr(tag.th('…')), tag.td(Markup('…'))) >>> list(table.generate()) [('START', (QName('table'), Attrs()), (None, -1, -1)), ('START', (QName('tr'), Attrs()), (None, -1, -1)), ('START', (QName('th'), Attrs()), (None, -1, -1)), ('TEXT', '…', (None, -1, -1)), ('END', QName('th'), (None, -1, -1)), ('END', QName('tr'), (None, -1, -1)), ('START', (QName('td'), Attrs()), (None, -1, -1)), ('TEXT', <Markup u'…'>, (None, -1, -1)), ('END', QName('td'), (None, -1, -1)), ('END', QName('table'), (None, -1, -1))] >>> table.generate().render('xml') '<table><tr><th>&hellip;</th></tr><td>…</td></table>'
All fine so far, but with strip_whitespace=False we get the unexpected:
>>> table.generate().render('xml', encoding=None, strip_whitespace=False) u'<table><tr><th>&hellip;</th></tr><td>&hellip;</td></table>'
I didn't investigate further yet, what strip_whitespace=False is to prevent the WhitespaceFilter to be added to the XMLSerializer, so the bug happens only when that filter is not present... strange.
Oh wait, this could be a problem with the string cache. I remember when reviewing [1038] that I was afraid that the cache wouldn't make a difference between escaped and unescaped strings, but I was not able to come up with a test case (maybe because I tested with the default strip_whitespace=True). To be continued...
those tests pass on r1037 but test_cache_markup_strip_whitespace fails with r1038