aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_decorators.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-02-05 21:32:07 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2010-02-05 21:32:07 +0000
commitd190169d0b0059b312ba9adad7011ecdff177188 (patch)
tree352d6cf60e4798fb68ee8146323ea2c1ff61e5be /test/test_decorators.py
parent9354a7e5e9ec515e6884464edef73302d7aa93ac (diff)
downloadexternal_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.py110
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"
+