示例#1
0
def test_eval_if():
    from conseq.config import Rules, _eval_stmts
    rules = Rules()
    # rules.set_var(name, value)

    statements = parser.parse_str("""
    if "'x' == 'y'":
      let a='1'
    else:
      let a='2'
    endif
    """)
    _eval_stmts(rules, statements, "none", None)
    assert rules.vars["a"] == "2"
示例#2
0
def test_parse_if():
    from conseq.config import Rules, _eval_stmts
    rules = Rules()
    # from conseq.parser import IfStatement, LetStatement

    statements = parser.parse_str(
        """
    if "'x' == 'y'":
      let a='1'
    else:
      let a='2'
    endif
    """, "declarations")
    _eval_stmts(rules, statements, "none", None)
    assert rules.vars["a"] == "2"
示例#3
0
def test_relative_file_paths(tmpdir):
    sample_rel_path = os.path.relpath(__file__, os.path.abspath("."))
    assert sample_rel_path[0] != "/"

    statements = parser.parse_str("""
    rule a:
        inputs: x=filename("{}")
    """.format(sample_rel_path))

    rules = Rules()
    _eval_stmts(rules, statements, "none",
                HashCache(str(tmpdir.join("hashcache"))))
    a = rules.get_rule("a")
    assert a is not None
    print(a.inputs)
    a.inputs[0].json_obj["name"] == os.path.abspath(sample_rel_path)
示例#4
0
def test_file_ref_with_copy_to(tmpdir):
    rules = Rules()
    # rules.set_var(name, value)

    localfile = tmpdir.join("xyz")
    localfile.write("x")

    statements = parser.parse_str("""
    rule a:
        inputs: x=filename("{}", copy_to="z")
    """.format(localfile))
    _eval_stmts(rules, statements, "none",
                HashCache(str(tmpdir.join("hashcache"))))

    a = rules.get_rule("a")
    assert a is not None
    assert a.inputs[0].copy_to == "z"
示例#5
0
def test_file_refs_with_vars(tmpdir):
    # make sure we can use variables work in filenames
    rules = Rules()
    rules.set_var("VARIABLE", str(tmpdir))
    rules.set_var("NUMBER", 2)

    localfile = tmpdir.join("xyz-2")
    localfile.write("x")

    statements = parser.parse_str("""
    rule a:
        inputs: x=filename("{{config.VARIABLE}}/xyz-{{config.NUMBER}}")
    """)
    _eval_stmts(rules, statements, "none",
                HashCache(str(tmpdir.join("hashcache"))))
    a = rules.get_rule("a")
    assert a is not None
    print(a.inputs)
    a.inputs[0].json_obj["name"] == str(localfile)
示例#6
0
def test_file_ref(tmpdir):
    rules = Rules()
    # rules.set_var(name, value)

    localfile = tmpdir.join("xyz")
    localfile.write("x")

    statements = parser.parse_str("""
    rule a:
        inputs: x=filename("{}")
    """.format(localfile))
    _eval_stmts(rules, statements,
                str(tmpdir) + "/none",
                HashCache(str(tmpdir.join("hashcache"))))
    a = rules.get_rule("a")
    assert a is not None
    print(a.inputs)
    assert a.inputs[0].json_obj["name"] == os.path.relpath(
        str(localfile), str(tmpdir))
    assert a.inputs[0].json_obj["type"] == "$fileref"
    assert a.inputs[0].copy_to is None
    assert len(rules.objs) == 1
示例#7
0
def test_generic_eval():
    from conseq.config import Rules, _eval_stmts
    rules = Rules()
    # rules.set_var(name, value)

    statements = parser.parse_str("""
    eval \"\"\"
        print('here')
        rules.set_var('x', 'y')
        print(config['x'])
        print(rules.vars)
        print(config)
        \"\"\"

    if "config.x == 'y'":
      let a='1'
    else:
      let a='2'
    endif
    """)
    _eval_stmts(rules, statements, "none", None)
    assert rules.vars["a"] == "1"