def test_jinja_x86_64(monkeypatch): template = "{{ x86_64 }}" monkeypatch.setattr(platform, "machine", lambda: "x86") assert render_jinja(template, filename="", is_included=False) == "False" monkeypatch.setattr(platform, "machine", lambda: "x86_64") assert render_jinja(template, filename="", is_included=False) == "True"
def test_jinja_x86_64(monkeypatch): template = "{{ x86_64 }}" monkeypatch.setattr(platform, 'machine', lambda: 'x86') assert render_jinja(template, filename="", is_included=False) == 'False' monkeypatch.setattr(platform, 'machine', lambda: 'x86_64') assert render_jinja(template, filename="", is_included=False) == 'True'
def test_jinja_win64(monkeypatch): template = "{{ win64 }}" monkeypatch.setattr(sys, 'platform', 'win') monkeypatch.setattr(platform, 'architecture', lambda: ('32bit', '')) assert render_jinja(template, filename="", is_included=False) == 'False' monkeypatch.setattr(platform, 'architecture', lambda: ('64bit', '')) assert render_jinja(template, filename="", is_included=False) == 'True'
def test_jinja_win64(monkeypatch): template = "{{ win64 }}" monkeypatch.setattr(sys, "platform", "win") monkeypatch.setattr(platform, "architecture", lambda: ("32bit", "")) assert render_jinja(template, filename="", is_included=False) == "False" monkeypatch.setattr(platform, "architecture", lambda: ("64bit", "")) assert render_jinja(template, filename="", is_included=False) == "True"
def test_jinja_invalid_template(): # TODO: change this to pytest's nicer syntax: with pytest.raises() try: render_jinja(textwrap.dedent("""\ {%- if os.environ['ENV_VARIABLE'] == '1' %} {% %} """), filename="") pytest.fail("Should raise an exception") except jinja2.exceptions.TemplateSyntaxError as e: pass
def test_jinja_invalid_template(): with pytest.raises(jinja2.exceptions.TemplateSyntaxError): render_jinja( textwrap.dedent("""\ {%- if os.environ['ENV_VARIABLE'] == '1' %} {% %} """), filename="", is_included=False, )
def test_jinja_linux(monkeypatch): template = "{{ linux }}" monkeypatch.setattr(sys, "platform", "linux") assert render_jinja(template, filename="", is_included=False) == "True" monkeypatch.setattr(sys, "platform", "win") assert render_jinja(template, filename="", is_included=False) == "False" monkeypatch.setattr(sys, "platform", "darwin") assert render_jinja(template, filename="", is_included=False) == "False"
def test_jinja_linux(monkeypatch): template = "{{ linux }}" monkeypatch.setattr(sys, 'platform', 'linux') assert render_jinja(template, filename="", is_included=False) == 'True' monkeypatch.setattr(sys, 'platform', 'win') assert render_jinja(template, filename="", is_included=False) == 'False' monkeypatch.setattr(sys, 'platform', 'darwin') assert render_jinja(template, filename="", is_included=False) == 'False'
def test_jinja_os(monkeypatch): template = textwrap.dedent("""\ {% if os.environ['ENV_VARIABLE'] == '1' -%} variable is set {%- else -%} variable is not set {%- endif %} """).strip() assert render_jinja(template, filename="") == "variable is not set" monkeypatch.setenv('ENV_VARIABLE', '1') assert render_jinja(template, filename="") == "variable is set" monkeypatch.setenv('ENV_VARIABLE', '2') assert render_jinja(template, filename="") == "variable is not set"
def test_jinja_sys(monkeypatch): template = textwrap.dedent("""\ {% if sys.platform.startswith('linux') -%} linux! {%- elif sys.platform.startswith('win') -%} windows! {%- else -%} others! {%- endif %} """).strip() monkeypatch.setattr(sys, 'platform', 'linux') assert render_jinja(template, filename="", is_included=False) == "linux!" monkeypatch.setattr(sys, 'platform', 'windows') assert render_jinja(template, filename="", is_included=False) == "windows!" monkeypatch.setattr(sys, 'platform', 'darwin') assert render_jinja(template, filename="", is_included=False) == "others!"
def test_jinja_os(monkeypatch): template = textwrap.dedent("""\ {% if os.environ['ENV_VARIABLE'] == '1' -%} variable is set {%- else -%} variable is not set {%- endif %} """).strip() assert (render_jinja(template, filename="", is_included=False) == "variable is not set") monkeypatch.setenv("ENV_VARIABLE", "1") assert render_jinja(template, filename="", is_included=False) == "variable is set" monkeypatch.setenv("ENV_VARIABLE", "2") assert (render_jinja(template, filename="", is_included=False) == "variable is not set")
def obtain_yaml_dicts(root_yaml_filename): contents = open(root_yaml_filename, "r").read() contents = render_jinja(contents, filename=root_yaml_filename, is_included=False) root_yaml = yaml.safe_load(contents) dicts = handle_includes(root_yaml_filename, root_yaml).values() dicts = list(dicts) # The list order does not matter, so we can"t use indices to fetch each item number_of_parsed_yamls = len(dicts) dicts = {d["name"]: d for d in dicts} # Make sure we're not removing any parsed yamls assert len(dicts) == number_of_parsed_yamls return dicts
def test_render_jinja_with_preprocessing_selectors(monkeypatch): template = textwrap.dedent("""\ {% set name = 'mylib' %} name: {{ name }} dependencies: - cmake - ccache # [unix] - clcache # [win] Windows has clcache instead of ccache """).strip() expected_unix = textwrap.dedent("""\ name: mylib dependencies: - cmake - ccache # [unix] """).strip() expected_win = textwrap.dedent("""\ name: mylib dependencies: - cmake - clcache # [win] Windows has clcache instead of ccache """).strip() monkeypatch.setattr(sys, 'platform', 'linux') actual_linux = render_jinja(template, filename="", is_included=False).strip() monkeypatch.setattr(sys, 'platform', 'darwin') actual_osx = render_jinja(template, filename="", is_included=False).strip() monkeypatch.setattr(sys, 'platform', 'win') actual_win = render_jinja(template, filename="", is_included=False).strip() assert actual_linux == expected_unix assert actual_osx == expected_unix assert actual_win == expected_win
def test_jinja_get_env(monkeypatch): template = "{{ get_env('PY', valid=['3.6']) }}" template_with_default = "{{ get_env('PY', default='3.6') }}" monkeypatch.setenv("PY", "3.6") assert render_jinja(template, filename="", is_included=False) == "3.6" monkeypatch.setenv("PY", "3.7") with pytest.raises(ValueError): render_jinja(template, filename="", is_included=False) monkeypatch.delenv("PY") with pytest.raises(ValueError): render_jinja(template, filename="", is_included=False) monkeypatch.delenv("PY", raising=False) assert render_jinja(template_with_default, filename="", is_included=False) == "3.6"
def test_jinja_root(): assert render_jinja("{{root}}", filename="path/to/file") == os.path.abspath("path/to")
def test_jinja_platform(monkeypatch): template = "{{ platform.python_revision() }}" assert render_jinja(template, filename="", is_included=False) == platform.python_revision()
def test_jinja_root(): assert render_jinja( "{{root}}", filename="path/to/file", is_included=False, ) == os.path.abspath("path/to")