64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import tempfile
|
|
import os
|
|
|
|
from shutil import rmtree
|
|
from testtools import TestCase
|
|
|
|
from charmhelpers.contrib.templating.jinja import render
|
|
|
|
|
|
SIMPLE_TEMPLATE = "{{ somevar }}"
|
|
|
|
|
|
LOOP_TEMPLATE = "{% for i in somevar %}{{ i }}{% endfor %}"
|
|
|
|
CUSTOM_DELIM_TEMPLATE = "{{ not_var }} << template_var >>"
|
|
|
|
|
|
class Jinja2Test(TestCase):
|
|
|
|
def setUp(self):
|
|
super(Jinja2Test, self).setUp()
|
|
# Create a "templates directory" in temp
|
|
self.templates_dir = tempfile.mkdtemp()
|
|
|
|
def tearDown(self):
|
|
super(Jinja2Test, self).tearDown()
|
|
# Remove the temporary directory so as not to pollute /tmp
|
|
rmtree(self.templates_dir)
|
|
|
|
def _write_template_to_file(self, name, contents):
|
|
path = os.path.join(self.templates_dir, name)
|
|
with open(path, "w") as thefile:
|
|
thefile.write(contents)
|
|
|
|
def test_render_simple_template(self):
|
|
name = "simple"
|
|
self._write_template_to_file(name, SIMPLE_TEMPLATE)
|
|
expected = "hello"
|
|
result = render(
|
|
name, {"somevar": expected}, template_dir=self.templates_dir)
|
|
self.assertEqual(expected, result)
|
|
|
|
def test_render_loop_template(self):
|
|
name = "loop"
|
|
self._write_template_to_file(name, LOOP_TEMPLATE)
|
|
expected = "12345"
|
|
result = render(
|
|
name, {"somevar": ["1", "2", "3", "4", "5"]},
|
|
template_dir=self.templates_dir)
|
|
self.assertEqual(expected, result)
|
|
|
|
def test_custom_delimiters(self):
|
|
name = "custom_delimiters"
|
|
template_var = "foo"
|
|
jinja_env_args = {"variable_start_string": "<<",
|
|
"variable_end_string": ">>"}
|
|
expected = "{{ not_var }} %s" % template_var
|
|
self._write_template_to_file(name, CUSTOM_DELIM_TEMPLATE)
|
|
|
|
result = render(name, {'template_var': template_var},
|
|
template_dir=self.templates_dir,
|
|
jinja_env_args=jinja_env_args)
|
|
self.assertEqual(expected, result)
|