]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Add `else` as possible sub-clause in `try` blocks in templates. 495/head
authorAlek Storm <alek.storm@gmail.com>
Tue, 17 Apr 2012 18:55:05 +0000 (14:55 -0400)
committerAlek Storm <alek.storm@gmail.com>
Tue, 17 Apr 2012 18:55:05 +0000 (14:55 -0400)
Add test case.

tornado/template.py
tornado/test/template_test.py

index a211f396029ec48d9d14fdaec1da01719490ead1..01a37599b48af639bb344533bbd6d1a6e7378968 100644 (file)
@@ -165,7 +165,7 @@ with ``{# ... #}``.
 ``{% set *x* = *y* %}``
     Sets a local variable.
 
-``{% try %}...{% except %}...{% finally %}...{% end %}``
+``{% try %}...{% except %}...{% finally %}...{% else %}...{% end %}``
     Same as the python ``try`` statement.
 
 ``{% while *condition* %}... {% end %}``
@@ -757,7 +757,7 @@ def _parse(reader, template, in_block=None):
 
         # Intermediate ("else", "elif", etc) blocks
         intermediate_blocks = {
-            "else": set(["if", "for", "while"]),
+            "else": set(["if", "for", "while", "try"]),
             "elif": set(["if"]),
             "except": set(["try"]),
             "finally": set(["try"]),
index c0175deea3f1dbbdabf108a516d4fcac6f098202..3ea190c3006d4470c6464ac3010ae086b1bbcf2b 100644 (file)
@@ -100,6 +100,16 @@ class TemplateTest(LogTrapTestCase):
         self.assertEqual(template.generate(x=5), b("yes"))
         self.assertEqual(template.generate(x=3), b("no"))
 
+    def test_try(self):
+        template = Template(utf8("""{% try %}
+try{% set y = 1/x %}
+{% except %}-except
+{% else %}-else
+{% finally %}-finally
+{% end %}"""))
+        self.assertEqual(template.generate(x=1), b("\ntry\n-else\n-finally\n"))
+        self.assertEqual(template.generate(x=0), b("\ntry-except\n-finally\n"))
+
     def test_comment_directive(self):
         template = Template(utf8("{% comment blah blah %}foo"))
         self.assertEqual(template.generate(), b("foo"))