diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-05 21:32:07 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-05 21:32:07 +0000 |
commit | d190169d0b0059b312ba9adad7011ecdff177188 (patch) | |
tree | 352d6cf60e4798fb68ee8146323ea2c1ff61e5be /test/test_decorators.py | |
parent | 9354a7e5e9ec515e6884464edef73302d7aa93ac (diff) | |
download | external_python_mako-d190169d0b0059b312ba9adad7011ecdff177188.tar.gz external_python_mako-d190169d0b0059b312ba9adad7011ecdff177188.tar.bz2 external_python_mako-d190169d0b0059b312ba9adad7011ecdff177188.zip |
- Unit tests now run with nose. [ticket:127]
Diffstat (limited to 'test/test_decorators.py')
-rw-r--r-- | test/test_decorators.py | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/test/test_decorators.py b/test/test_decorators.py new file mode 100644 index 0000000..62ba360 --- /dev/null +++ b/test/test_decorators.py @@ -0,0 +1,110 @@ +from mako.template import Template +from mako import lookup +import unittest +from util import flatten_result, result_lines + +class DecoratorTest(unittest.TestCase): + def test_toplevel(self): + template = Template(""" + <%! + def bar(fn): + def decorate(context, *args, **kw): + return "BAR" + runtime.capture(context, fn, *args, **kw) + "BAR" + return decorate + %> + + <%def name="foo(y, x)" decorator="bar"> + this is foo ${y} ${x} + </%def> + + ${foo(1, x=5)} + """) + + assert flatten_result(template.render()) == "BAR this is foo 1 5 BAR" + + def test_toplevel_contextual(self): + template = Template(""" + <%! + def bar(fn): + def decorate(context): + context.write("BAR") + fn() + context.write("BAR") + return '' + return decorate + %> + + <%def name="foo()" decorator="bar"> + this is foo + </%def> + + ${foo()} + """) + + assert flatten_result(template.render()) == "BAR this is foo BAR" + + assert flatten_result(template.get_def('foo').render()) == "BAR this is foo BAR" + + + def test_nested(self): + template = Template(""" + <%! + def bat(fn): + def decorate(context): + return "BAT" + runtime.capture(context, fn) + "BAT" + return decorate + %> + + <%def name="foo()"> + + <%def name="bar()" decorator="bat"> + this is bar + </%def> + ${bar()} + </%def> + + ${foo()} + """) + + assert flatten_result(template.render()) == "BAT this is bar BAT" + + def test_toplevel_decorated_name(self): + template = Template(""" + <%! + def bar(fn): + def decorate(context, *args, **kw): + return "function " + fn.__name__ + " " + runtime.capture(context, fn, *args, **kw) + return decorate + %> + + <%def name="foo(y, x)" decorator="bar"> + this is foo ${y} ${x} + </%def> + + ${foo(1, x=5)} + """) + + assert flatten_result(template.render()) == "function foo this is foo 1 5" + + def test_nested_decorated_name(self): + template = Template(""" + <%! + def bat(fn): + def decorate(context): + return "function " + fn.__name__ + " " + runtime.capture(context, fn) + return decorate + %> + + <%def name="foo()"> + + <%def name="bar()" decorator="bat"> + this is bar + </%def> + ${bar()} + </%def> + + ${foo()} + """) + + assert flatten_result(template.render()) == "function bar this is bar" + |