Ubuntu Pastebin

Paste from smoser at Thu, 25 Jun 2015 17:54:01 +0000

Download as text
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
diff --git a/cloudinit/templater.py b/cloudinit/templater.py
index 282da2d..fe081c8 100644
--- a/cloudinit/templater.py
+++ b/cloudinit/templater.py
@@ -73,12 +73,11 @@ def detect_template(text):
     else:
         ident = text
         rest = ''
+
     type_match = TYPE_MATCHER.match(ident)
+
     if not type_match:
-        if not JINJA_AVAILABLE:
-            LOG.warn("Jinja2 not available as the default renderer for"
-                     " unknown template, reverting to the basic renderer.")
-            return ('basic', basic_render, text)
+        return ('basic', basic_render, text)
     else:
         template_type = type_match.group(1).lower().strip()
         if template_type not in ('jinja', 'basic'):
diff --git a/cloudinit/tests/test_templating.py b/cloudinit/tests/test_templating.py
new file mode 100644
index 0000000..5496f60
--- /dev/null
+++ b/cloudinit/tests/test_templating.py
@@ -0,0 +1,83 @@
+# Copyright 2015 Canonical Ltd.
+# This file is part of cloud-init.  See LICENCE file for license information.
+#
+# vi: ts=4 expandtab
+
+from cloudinit import templater
+from cloudinit import test
+
+import textwrap
+
+
+class TestTemplates(test.TestCase):
+    def test_render_basic(self):
+        in_data = textwrap.dedent("""
+            ${b}
+
+            c = d
+            """)
+        in_data = in_data.strip()
+        expected_data = textwrap.dedent("""
+            2
+
+            c = d
+            """)
+        out_data = templater.basic_render(in_data, {'b': 2})
+        self.assertEqual(expected_data.strip(), out_data)
+
+    def test_render_jinja(self):
+        blob = '\n'.join((
+           "## template:jinja",
+           "{{a}},{{b}}",
+           ""))
+        c = templater.render_string(blob, {"a": 1, "b": 2})
+        self.assertEquals("1,2\n", c)
+
+    def test_render_jinja_crlf(self):
+        blob = '\r\n'.join((
+           "## template:jinja",
+           "{{a}},{{b}}"))
+        c = templater.render_string(blob, {"a": 1, "b": 2})
+        self.assertEquals("1,2", c)
+
+    def test_render_default(self):
+        blob = '''$a,$b'''
+        c = templater.render_string(blob, {"a": 1, "b": 2})
+        self.assertEquals("1,2", c)
+
+    def test_render_basic_deeper(self):
+        hn = 'myfoohost.yahoo.com'
+        expected_data = "h=%s\nc=d\n" % hn
+        in_data = "h=$hostname.canonical_name\nc=d\n"
+        params = {
+            "hostname": {
+                "canonical_name": hn,
+            },
+        }
+        out_data = templater.render_string(in_data, params)
+        self.assertEqual(expected_data, out_data)
+
+    def test_render_basic_no_parens(self):
+        hn = "myfoohost"
+        in_data = "h=$hostname\nc=d\n"
+        expected_data = "h=%s\nc=d\n" % hn
+        out_data = templater.basic_render(in_data, {'hostname': hn})
+        self.assertEqual(expected_data, out_data)
+
+    def test_render_basic_parens(self):
+        hn = "myfoohost"
+        in_data = "h = ${hostname}\nc=d\n"
+        expected_data = "h = %s\nc=d\n" % hn
+        out_data = templater.basic_render(in_data, {'hostname': hn})
+        self.assertEqual(expected_data, out_data)
+
+    def test_render_basic2(self):
+        mirror = "mymirror"
+        codename = "zany"
+        in_data = "deb $mirror $codename-updates main contrib non-free"
+        ex_data = "deb %s %s-updates main contrib non-free" % (mirror,
+                                                               codename)
+
+        out_data = templater.basic_render(in_data,
+            {'mirror': mirror, 'codename': codename})
+        self.assertEqual(ex_data, out_data)
Download as text