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"
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"
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)
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"
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)
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
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"