Beispiel #1
0
 def __init__(self, site_path, builders=None):
     self.site_path = site_path
     self._default_template_path = os.path.join(site_path,
                                                self.DEFAULT_TEMPLATE)
     self._default = None
     self.templates_path = os.path.join(site_path, self.TEMPLATES_DIR)
     self._templates = {}
     self._builders = builders
     if builders is None:
         # Set default builders.
         self._jinja_builder = JinjaTemplateBuilder(self.templates_path)
         self._builders = {
             '.html': StringTemplate,
             '.j2': self._jinja_builder.build
         }
Beispiel #2
0
class TestJinjaTemplateBuilder(unittest.TestCase):

    def setUp(self):
        self.templates = tempfile.mkdtemp()
        self.builder = JinjaTemplateBuilder(self.templates)
        self.base_file = os.path.join(self.templates, 'base.j2')
        open(self.base_file, 'w').close()

    def test_builds_template(self):
        template = self.builder.build(self.base_file)
        self.assertTrue(isinstance(template, jinja2.Template))

    def test_aborts_with_bad_template(self):
        with open(self.base_file, 'w') as f:
            f.write('{%')  # No closing template marker
        with self.assertRaises(AbortError):
            self.builder.build(self.base_file)

    def test_last_modified_with_newer_parent(self):
        template_file = os.path.join(self.templates, 'derived.j2')
        with open(template_file, 'w') as f:
            f.write('{% extends "base.j2" %}')
        # Fast file systems make mtime equal for both files. Set to the future.
        template_mtime = os.path.getmtime(template_file)
        future = template_mtime + 1
        os.utime(self.base_file, (future, future))

        template = self.builder.build(template_file)
        self.assertEqual(
            os.path.getmtime(self.base_file), template.last_modified)

    def test_skips_nonetype_parent(self):
        with open(self.base_file, 'w') as f:
            f.write('{% include helper %}')  # Non-existent "parent"
        template = self.builder.build(self.base_file)
        self.assertTrue(isinstance(template, jinja2.Template))

    def test_gets_cached_modified_time(self):
        template = self.builder.build(self.base_file)
        template = self.builder.build(self.base_file)
        self.assertTrue(isinstance(template, jinja2.Template))
Beispiel #3
0
 def setUp(self):
     self.templates = tempfile.mkdtemp()
     self.builder = JinjaTemplateBuilder(self.templates)
     self.base_file = os.path.join(self.templates, 'base.j2')
     open(self.base_file, 'w').close()