def run_step(context: Context): print("filespec: %s" % str(context)) context.assert_key_has_value("vlnv", "filespec") context.assert_key_exists("out", "filespec") vlnv = context.get_formatted("vlnv") dbm = CoreDbMgr.inst() deps = dbm.get_depends(vlnv) for e in context["out"]: if "name" not in e.keys(): raise KeyNotInContextError("Missing 'name'") if "type" not in e.keys(): raise KeyNotInContextError("Missing 'type'") name = e["name"] file_types = set() for t in e["type"]: file_types.add(t.strip()) flags = {} if "flags" in e.keys(): for f in e["flags"]: flags[f] = True is_include = False if "include" in e.keys(): is_include = bool(e["include"]) files = dbm.collect_files(deps, file_types, flags, is_include) if name in context.keys(): if isinstance(context[name], list): context[name].extend(files) elif isinstance(context[name], str): context[name] += " ".join(files) else: raise Exception("Target for files is an unsupported type %s" % str(type(context[name]))) else: context[name] = files
def run_step(context: Context): context.assert_key_exists("cmd", "run_step") cmd_r = context.get_formatted("cmd") print("cmd=%s" % cmd_r) cmd_l = cmd_r.split() print("cmd_l=%s" % str(cmd_l)) cmd = [sys.executable, '-m'] for a in cmd_l: if a[0] == '"': cmd.append(a[1:len(a) - 1]) else: cmd.append(a) print("cmd=%s" % str(cmd)) if "out" in context.keys(): try: out = subprocess.check_output(cmd) except Exception as e: print("Exception: %s" % str(e)) traceback.print_exc() raise e context[context["out"]] = out.decode().strip() else: try: res = subprocess.run(cmd, stdout=sys.stdout, stderr=sys.stderr) except Exception as e: raise e if res.returncode != 0: raise Exception("Run failed") pass
def test_assert_key_exists_passes_string_values(): """assert_key_has_value passes if context dictionary key value is None.""" context = Context({'key1': 'something', 'key2': 'other', 'key3': False}) context.assert_key_exists('key2', None) context.assert_key_exists('key3', None)
def test_assert_key_exists_passes_value_none(): """assert_key_has_value passes if context dictionary key value is None.""" context = Context({'key1': None}) context.assert_key_exists('key1', None)
def test_assert_key_exists_raises(): """KeyNotInContextError if key doesn't exist.""" context = Context({'key1': 'value1'}) with pytest.raises(KeyNotInContextError): context.assert_key_exists('notindict', None)