Exemple #1
0
 def testRenderError(self):
     try:
         moody.compile("{% if foo %}\n{{bar}}\n{% else %}\nHello world\n{% endif %}", name="foo").render(foo="foo")
     except TemplateRenderError as ex:
         self.assertEqual(ex.template_lineno, 2)
         self.assertEqual(ex.template_name, "foo")
         self.assertTrue(isinstance(ex.__cause__, NameError))
Exemple #2
0
 def testInheritance(self):
     parent_template = moody.compile("Hello {% block name %}world{% endblock %}")
     child_template = moody.compile("{% extends parent %}{% block name %}Dave {% block surname %}Hall{% endblock %}{% endblock %}")
     grandchild_template = moody.compile("{% extends child %}{% block surname %}Foo{% endblock %}")
     self.assertEqual(parent_template.render(), "Hello world")
     self.assertEqual(child_template.render(parent=parent_template), "Hello Dave Hall")
     self.assertEqual(grandchild_template.render(parent=parent_template, child=child_template), "Hello Dave Foo")
Exemple #3
0
 def testCompileError(self):
     try:
         moody.compile("{% if foo %}\n{{foo}}\n{% else %}\n{% flobble %}\n{% endif %}", name="foo")
     except TemplateCompileError as ex:
         self.assertEqual(ex.template_lineno, 4)
         self.assertEqual(ex.template_name, "foo")
         self.assertTrue(isinstance(ex.__cause__, SyntaxError))
 def testCompileError(self):
     try:
         moody.compile(
             "{% if foo %}\n{{foo}}\n{% else %}\n{% flobble %}\n{% endif %}",
             name="foo")
     except TemplateCompileError as ex:
         self.assertEqual(ex.template_lineno, 4)
         self.assertEqual(ex.template_name, "foo")
         self.assertTrue(isinstance(ex.__cause__, SyntaxError))
 def testRenderError(self):
     try:
         moody.compile(
             "{% if foo %}\n{{bar}}\n{% else %}\nHello world\n{% endif %}",
             name="foo").render(foo="foo")
     except TemplateRenderError as ex:
         self.assertEqual(ex.template_lineno, 2)
         self.assertEqual(ex.template_name, "foo")
         self.assertTrue(isinstance(ex.__cause__, NameError))
Exemple #6
0
 def testForMacro(self):
     # Test basic functionality.
     template1 = moody.compile("{% for n in range(0, 3) %}{{n}}{% endfor %}")
     self.assertEqual(template1.render(), "012")
     # Test various syntax errors.
     self.assertRaises(TemplateCompileError, lambda: moody.compile("{% for n in range(0, 3) %}"))
     # Test variable expansion.
     template2 = moody.compile("{% for n, m in value %}{{n}}{{m}}{% endfor %}")
     self.assertEqual(template2.render(value=[["foo", "bar"]]), "foobar")
     self.assertRaises(TemplateRenderError, lambda: template2.render(value=[["foo"]]))
     self.assertRaises(TemplateRenderError, lambda: template2.render(value=[["foo", "bar", "foobar"]]))
 def testInheritance(self):
     parent_template = moody.compile(
         "Hello {% block name %}world{% endblock %}")
     child_template = moody.compile(
         "{% extends parent %}{% block name %}Dave {% block surname %}Hall{% endblock %}{% endblock %}"
     )
     grandchild_template = moody.compile(
         "{% extends child %}{% block surname %}Foo{% endblock %}")
     self.assertEqual(parent_template.render(), "Hello world")
     self.assertEqual(child_template.render(parent=parent_template),
                      "Hello Dave Hall")
     self.assertEqual(
         grandchild_template.render(parent=parent_template,
                                    child=child_template), "Hello Dave Foo")
 def testAutoescape(self):
     template1 = moody.compile("{{value}}{% print value %}",
                               name="test.html")
     self.assertEqual(
         template1.render(value="<foo bar='bar' baz=\"baz\">"),
         "&lt;foo bar=&#x27;bar&#x27; baz=&quot;baz&quot;&gt;<foo bar='bar' baz=\"baz\">"
     )
Exemple #9
0
 def testPyMacro(self):
     template1 = moody.compile("""
         {% py items = range(10) %}
         {% for n in items %}{{n}}{% endfor %}
     """)
     self.assertEqual(template1.render().strip(), "0123456789")
     template2 = moody.compile("""
         {% py
         
             items = []
             for n in range(10):
                 items.append(n)
         %}
         {% for n in items %}{{n}}{% endfor %}
     """)
     self.assertEqual(template2.render().strip(), "0123456789")
 def testPyMacro(self):
     template1 = moody.compile("""
         {% py items = range(10) %}
         {% for n in items %}{{n}}{% endfor %}
     """)
     self.assertEqual(template1.render().strip(), "0123456789")
     template2 = moody.compile("""
         {% py
         
             items = []
             for n in range(10):
                 items.append(n)
         %}
         {% for n in items %}{{n}}{% endfor %}
     """)
     self.assertEqual(template2.render().strip(), "0123456789")
 def testForMacro(self):
     # Test basic functionality.
     template1 = moody.compile(
         "{% for n in range(0, 3) %}{{n}}{% endfor %}")
     self.assertEqual(template1.render(), "012")
     # Test various syntax errors.
     self.assertRaises(TemplateCompileError,
                       lambda: moody.compile("{% for n in range(0, 3) %}"))
     # Test variable expansion.
     template2 = moody.compile(
         "{% for n, m in value %}{{n}}{{m}}{% endfor %}")
     self.assertEqual(template2.render(value=[["foo", "bar"]]), "foobar")
     self.assertRaises(TemplateRenderError,
                       lambda: template2.render(value=[["foo"]]))
     self.assertRaises(
         TemplateRenderError,
         lambda: template2.render(value=[["foo", "bar", "foobar"]]))
 def testIfMacro(self):
     # Test single if.
     template1 = moody.compile("{% if test == 'foo' %}foo{% endif %}")
     self.assertEqual(template1.render(test="foo"), "foo")
     self.assertEqual(template1.render(test="bar"), "")
     # Test if and else.
     template2 = moody.compile(
         "{% if test == 'foo' %}foo{% else %}bar{% endif %}")
     self.assertEqual(template2.render(test="foo"), "foo")
     self.assertEqual(template2.render(test="bar"), "bar")
     # Test if, elif and else.
     template3 = moody.compile(
         "{% if test == 'foo' %}foo{% elif test == 'bar' %}bar{% else %}snafu{% endif %}"
     )
     self.assertEqual(template3.render(test="foo"), "foo")
     self.assertEqual(template3.render(test="bar"), "bar")
     self.assertEqual(template3.render(test="snafu"), "snafu")
     # Test if and elif
     template4 = moody.compile(
         "{% if test == 'foo' %}foo{% elif test == 'bar' %}bar{% elif test == 'snafu' %}snafu{% endif %}"
     )
     self.assertEqual(template4.render(test="foo"), "foo")
     self.assertEqual(template4.render(test="bar"), "bar")
     self.assertEqual(template4.render(test="snafu"), "snafu")
     self.assertEqual(template4.render(test="wibble"), "")
     # Test various syntax errors.
     self.assertRaises(TemplateCompileError,
                       lambda: moody.compile("{% if True %}"))
     self.assertRaises(
         TemplateCompileError, lambda: moody.compile(
             "{% if True %}{% else %}{% elif True %}{% endif %}"))
     self.assertRaises(
         TemplateCompileError, lambda: moody.compile(
             "{% if True %}{% else %}{% else %}{% endif %}"))
Exemple #13
0
 def testLineMacros(self):
     template = moody.compile("""
         %% if test.startswith("foo")
             {% if test.endswith("bar") %}{{test}}{% endif %}
         %% endif
     """)
     self.assertEqual(template.render(test="foobar"), """
             foobar
     """)
 def testLineMacros(self):
     template = moody.compile("""
         %% if test.startswith("foo")
             {% if test.endswith("bar") %}{{test}}{% endif %}
         %% endif
     """)
     self.assertEqual(template.render(test="foobar"), """
             foobar
     """)
 def testLineComments(self):
     template = moody.compile("""
         %% if test.startswith("foo")
             ## This comment should be ignored.
             {% if test.endswith("bar") %}{{test}}{% endif %}
         %% endif
     """)
     self.assertEqual(template.render(test="foobar"), """
             foobar
     """)
Exemple #16
0
 def testLineComments(self):
     template = moody.compile("""
         %% if test.startswith("foo")
             ## This comment should be ignored.
             {% if test.endswith("bar") %}{{test}}{% endif %}
         %% endif
     """)
     self.assertEqual(template.render(test="foobar"), """
             foobar
     """)
Exemple #17
0
 def testNestedTags(self):
     template1 = moody.compile("""
         {% if test.startswith("foo") %}
             {% if test == "foobar" %}
                 {{test}}
             {% else %}
                 {% for item in range(2) %}{% if True %}{{test}}{% endif %}{% endfor %}
             {% endif %}
         {% else %}
             snafu
         {% endif %}
     """)
     self.assertEqual(template1.render(test="foobar").strip(), "foobar")
     self.assertEqual(template1.render(test="foo").strip(), "foofoo")
     self.assertEqual(template1.render(test="").strip(), "snafu")
 def testNestedTags(self):
     template1 = moody.compile("""
         {% if test.startswith("foo") %}
             {% if test == "foobar" %}
                 {{test}}
             {% else %}
                 {% for item in range(2) %}{% if True %}{{test}}{% endif %}{% endfor %}
             {% endif %}
         {% else %}
             snafu
         {% endif %}
     """)
     self.assertEqual(template1.render(test="foobar").strip(), "foobar")
     self.assertEqual(template1.render(test="foo").strip(), "foofoo")
     self.assertEqual(template1.render(test="").strip(), "snafu")
Exemple #19
0
 def testIfMacro(self):
     # Test single if.
     template1 = moody.compile("{% if test == 'foo' %}foo{% endif %}")
     self.assertEqual(template1.render(test="foo"), "foo")
     self.assertEqual(template1.render(test="bar"), "")
     # Test if and else.
     template2 = moody.compile("{% if test == 'foo' %}foo{% else %}bar{% endif %}")
     self.assertEqual(template2.render(test="foo"), "foo")
     self.assertEqual(template2.render(test="bar"), "bar")
     # Test if, elif and else.
     template3 = moody.compile("{% if test == 'foo' %}foo{% elif test == 'bar' %}bar{% else %}snafu{% endif %}")
     self.assertEqual(template3.render(test="foo"), "foo")
     self.assertEqual(template3.render(test="bar"), "bar")
     self.assertEqual(template3.render(test="snafu"), "snafu")
     # Test if and elif
     template4 = moody.compile("{% if test == 'foo' %}foo{% elif test == 'bar' %}bar{% elif test == 'snafu' %}snafu{% endif %}")
     self.assertEqual(template4.render(test="foo"), "foo")
     self.assertEqual(template4.render(test="bar"), "bar")
     self.assertEqual(template4.render(test="snafu"), "snafu")
     self.assertEqual(template4.render(test="wibble"), "")
     # Test various syntax errors.
     self.assertRaises(TemplateCompileError, lambda: moody.compile("{% if True %}"))
     self.assertRaises(TemplateCompileError, lambda: moody.compile("{% if True %}{% else %}{% elif True %}{% endif %}"))
     self.assertRaises(TemplateCompileError, lambda: moody.compile("{% if True %}{% else %}{% else %}{% endif %}"))
 def testIncludeMacro(self):
     template1 = moody.compile("Foo")
     template2 = moody.compile("{% include inner %}")
     self.assertEqual(template1.render(), template2.render(inner=template1))
Exemple #21
0
 def testAutoescape(self):
     template1 = moody.compile("{{value}}{% print value %}", name="test.html")
     self.assertEqual(template1.render(value="<foo bar='bar' baz=\"baz\">"), "&lt;foo bar=&#x27;bar&#x27; baz=&quot;baz&quot;&gt;<foo bar='bar' baz=\"baz\">")
Exemple #22
0
 def testDefaultParams(self):
     template1 = moody.compile("{{test}}", params={"test": "foo"})
     self.assertEqual(template1.render(), "foo")
     self.assertEqual(template1.render(test="bar"), "bar")
Exemple #23
0
 def testIncludeMacro(self):
     template1 = moody.compile("Foo")
     template2 = moody.compile("{% include inner %}")
     self.assertEqual(template1.render(), template2.render(inner=template1))
 def testDefaultParams(self):
     template1 = moody.compile("{{test}}", params={"test": "foo"})
     self.assertEqual(template1.render(), "foo")
     self.assertEqual(template1.render(test="bar"), "bar")