diff --git a/jenkins_jobs/registry.py b/jenkins_jobs/registry.py
index a107078ae..4b4099631 100644
--- a/jenkins_jobs/registry.py
+++ b/jenkins_jobs/registry.py
@@ -23,6 +23,7 @@ import types
from jenkins_jobs.errors import JenkinsJobsException
from jenkins_jobs.formatter import deep_format
+from jenkins_jobs.local_yaml import Jinja2Loader
__all__ = [
"ModuleRegistry"
@@ -160,9 +161,10 @@ class ModuleRegistry(object):
if isinstance(component, dict):
# The component is a singleton dictionary of name: dict(args)
name, component_data = next(iter(component.items()))
- if template_data:
+ if template_data or isinstance(component_data, Jinja2Loader):
# Template data contains values that should be interpolated
- # into the component definition
+ # into the component definition. To handle Jinja2 templates
+ # that don't contain any variables, we also deep format those.
try:
component_data = deep_format(
component_data, template_data,
diff --git a/tests/yamlparser/fixtures/jinja-string02.xml b/tests/yamlparser/fixtures/jinja-string02.xml
new file mode 100644
index 000000000..c61fef927
--- /dev/null
+++ b/tests/yamlparser/fixtures/jinja-string02.xml
@@ -0,0 +1,19 @@
+
+
+
+ <!-- Managed by Jenkins Job Builder -->
+ false
+ false
+ false
+ false
+ true
+
+
+
+
+ 123
+
+
+
+
+
diff --git a/tests/yamlparser/fixtures/jinja-string02.yaml b/tests/yamlparser/fixtures/jinja-string02.yaml
new file mode 100644
index 000000000..e487ac8be
--- /dev/null
+++ b/tests/yamlparser/fixtures/jinja-string02.yaml
@@ -0,0 +1,4 @@
+- job:
+ name: test-job
+ builders:
+ - shell: !j2: "{% for x in [1, 2, 3] %}{{ x }}{% endfor %}"
diff --git a/tests/yamlparser/fixtures/jinja03.xml b/tests/yamlparser/fixtures/jinja03.xml
new file mode 100644
index 000000000..b2ca95fd6
--- /dev/null
+++ b/tests/yamlparser/fixtures/jinja03.xml
@@ -0,0 +1,22 @@
+
+
+
+ <!-- Managed by Jenkins Job Builder -->
+ false
+ false
+ false
+ false
+ true
+
+
+
+
+
+1
+2
+3
+
+
+
+
+
diff --git a/tests/yamlparser/fixtures/jinja03.yaml b/tests/yamlparser/fixtures/jinja03.yaml
new file mode 100644
index 000000000..6392074fb
--- /dev/null
+++ b/tests/yamlparser/fixtures/jinja03.yaml
@@ -0,0 +1,5 @@
+- job:
+ name: test-job
+ builders:
+ - shell:
+ !include-jinja2: jinja03.yaml.inc
diff --git a/tests/yamlparser/fixtures/jinja03.yaml.inc b/tests/yamlparser/fixtures/jinja03.yaml.inc
new file mode 100644
index 000000000..ff2096f50
--- /dev/null
+++ b/tests/yamlparser/fixtures/jinja03.yaml.inc
@@ -0,0 +1,3 @@
+{% for x in [1, 2, 3] %}
+{{ x }}
+{%- endfor %}