]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add _common dir to jinja2 template loader
authorNicki Křížek <nicki@isc.org>
Tue, 7 Apr 2026 12:43:11 +0000 (14:43 +0200)
committerNicki Křížek <nicki@isc.org>
Wed, 27 May 2026 14:25:43 +0000 (16:25 +0200)
This allows include of template snippets from _common/ directory.

bin/tests/system/isctest/template.py

index 21cc811dfb6ea5d3c7d58c2d1377c51900ef065c..f0668880c69d7d22d5489de1b94055ee576b5451 100644 (file)
@@ -40,7 +40,12 @@ class TemplateEngine:
         self.directory = Path(directory)
         self.env_vars = dict(env_vars)
         self.j2env = jinja2.Environment(
-            loader=jinja2.FileSystemLoader(str(self.directory)),
+            loader=jinja2.FileSystemLoader(
+                [
+                    str(self.directory),
+                    str(ALL["srcdir"]),  # to allow _common/ includes
+                ]
+            ),
             undefined=jinja2.StrictUndefined,
             variable_start_string="@",
             variable_end_string="@",
@@ -65,12 +70,13 @@ class TemplateEngine:
         variables which the engine was initialized with are also filled in. In
         case of a variable name clash, `data` has precedence.
         """
+        available = self.j2env.list_templates()
         if template is None:
             template = f"{output}.j2.manual"
-            if not Path(template).is_file():
+            if template not in available:
                 template = f"{output}.j2"
-        if not Path(template).is_file():
-            raise RuntimeError('No jinja2 template found for "{output}"')
+        if template not in available:
+            raise RuntimeError(f'No jinja2 template found for "{output}"')
 
         if data is None:
             data = {**self.env_vars}