You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<%inherit file="base.htm" />
## should throw exception
${undefined_var}
Test1.htm stuff
test.py
import os
from mako.lookup import TemplateLookup
from mako.template import Template
l = TemplateLookup(directories=[os.getcwd(),])
t = Template(filename='test1.htm', lookup=l, format_exceptions=True)
print t.render()
As a result there will be 3 blank lines :). Expected: formatted error message.
Representable with 0.1.10 and latest trunk.
Problem is in your way of copying context. After Context._copy() copied instance will share all buffers and even buffer list with source Context. This can make a lot of hard-to-find errors. As this :).
mako.runtime, _exec_template(), 332 line:
context._buffer_stack = [util.StringIO()]
Here you overwrite buffer stack, but only for current context instance. And expect changes on all Contexts :).
In patch I had also changed the way buffers are created. At least this will allow multilingual template errors messages in the future ;). Also - use cStringIO ONLY for unicode (I mean use cStringIO if non-unicode encoding supplied).
If you dont want that much changes - to fix error problem you just need to replace
mako.runtime, _exec_template(), 332 line:
context._buffer_stack = [util.StringIO()]
to
while context._buffer_stack: del context._buffer_stack[0]
context._buffer_stack.append(util.StringIO())
OK, sorry we can't change the constructor to Context here as it's public API that it takes a buffer as an argument. The FastEncodingBuffer is good enough to use for formatting exceptions in all cases. The context collection bug is fixed in d19ff8d, and the html_error_template() encoding is used with format_exceptions in 5214f0f. thanks for spotting this.
Migrated issue, originally created by Anonymous
Very strange behavior, but:
base.htm
test.htm
test.py
As a result there will be 3 blank lines :). Expected: formatted error message.
Representable with 0.1.10 and latest trunk.
Problem is in your way of copying context. After Context._copy() copied instance will share all buffers and even buffer list with source Context. This can make a lot of hard-to-find errors. As this :).
mako.runtime, _exec_template(), 332 line:
Here you overwrite buffer stack, but only for current context instance. And expect changes on all Contexts :).
In patch I had also changed the way buffers are created. At least this will allow multilingual template errors messages in the future ;). Also - use cStringIO ONLY for unicode (I mean use cStringIO if non-unicode encoding supplied).
If you dont want that much changes - to fix error problem you just need to replace
mako.runtime, _exec_template(), 332 line:
to
Cheers!
Attachments: runtime_buffers.patch
The text was updated successfully, but these errors were encountered: