This is an automated email from the ASF dual-hosted git repository. prhomberg pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push: new f80efcd GEODE-6483: Correct render.py multipass failure. (#3281) f80efcd is described below commit f80efcd3e3f0fbb329bf1f9be67edf08c7c0521d Author: Patrick Rhomberg <prhomb...@pivotal.io> AuthorDate: Fri Mar 8 11:08:42 2019 -0800 GEODE-6483: Correct render.py multipass failure. (#3281) --- ci/pipelines/render.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/ci/pipelines/render.py b/ci/pipelines/render.py index ffd7d30..a2de4cd 100755 --- a/ci/pipelines/render.py +++ b/ci/pipelines/render.py @@ -20,15 +20,14 @@ """This script performs a multi-pass render of a Jinja templated file. See the argparse help for details.""" import argparse +import jinja2.exceptions import logging import os import pprint -from itertools import combinations -from typing import List, Dict - -import jinja2.exceptions import yaml +from itertools import combinations from jinja2 import Environment, FileSystemLoader, Undefined +from typing import List, Dict RENDER_PASS_LIMIT = 5 @@ -51,7 +50,7 @@ def render_template(template_file: str, env = get_environment(environment_dirs, template_file) variables = determine_variables(command_line_variable_options, variables_files) template = env.get_template(os.path.basename(template_file)) - rendered_template = multipass_render(template, variables) + rendered_template = multipass_render(template, variables, env) if print_rendered: print(rendered_template) @@ -74,17 +73,20 @@ def get_environment(environment_dirs, template_file): return env -def multipass_render(template, variables): +def multipass_render(template, variables, environment): f"""Performs a multiple-pass render of the template file, allowing variables to reference other variables. Performs at most RENDER_PASS_LIMIT (={RENDER_PASS_LIMIT}) passes. """ this_template = template + for i in range(1, RENDER_PASS_LIMIT + 1): logging.debug(f"Performing render pass {i}...") - this_template = this_template.render(variables) - if "{{" not in this_template: - return this_template + this_template_rendered = this_template.render(variables) + if "{{" not in this_template_rendered: + return this_template_rendered + this_template = environment.from_string(this_template_rendered) + raise RuntimeError(f"Variables not eliminated from template after {RENDER_PASS_LIMIT} passes." f" Please verify that template variables references to not recurse.")