def run(cmd, cwd=None, check=False): """Drop in replacement for ``subprocess.run`` like functionality""" env = XSH.env if cwd is None: with env.swap(RAISE_SUBPROC_ERROR=check): p = subproc_captured_hiddenobject(cmd) else: with indir(cwd), env.swap(RAISE_SUBPROC_ERROR=check): p = subproc_captured_hiddenobject(cmd) return p
def check_output(cmd, cwd=None): """Drop in replacement for ``subprocess.check_output`` like functionality""" env = XSH.env if cwd is None: with env.swap(RAISE_SUBPROC_ERROR=True): output = subproc_captured_stdout(cmd) else: with indir(cwd), env.swap(RAISE_SUBPROC_ERROR=True): output = subproc_captured_stdout(cmd) return output.encode("utf-8")
def run_test_yaml_migration(m, *, inp, output, kwargs, prb, mr_out, tmpdir, should_filter=False): os.makedirs(os.path.join(tmpdir, "recipe"), exist_ok=True) with open(os.path.join(tmpdir, "recipe", "meta.yaml"), "w") as f: f.write(inp) with indir(tmpdir): subprocess.run(["git", "init"]) # Load the meta.yaml (this is done in the graph) try: pmy = parse_meta_yaml(inp) except Exception: pmy = {} if pmy: pmy["version"] = pmy["package"]["version"] pmy["req"] = set() for k in ["build", "host", "run"]: pmy["req"] |= set(pmy.get("requirements", {}).get(k, set())) try: pmy["meta_yaml"] = parse_meta_yaml(inp) except Exception: pmy["meta_yaml"] = {} pmy["raw_meta_yaml"] = inp pmy.update(kwargs) assert m.filter(pmy) is should_filter if should_filter: return mr = m.migrate(os.path.join(tmpdir, "recipe"), pmy) assert mr_out == mr pmy.update(PRed=[frozen_to_json_friendly(mr)]) with open(os.path.join(tmpdir, "recipe/meta.yaml")) as f: actual_output = f.read() assert actual_output == output assert os.path.exists( os.path.join(tmpdir, ".ci_support/migrations/hi.yaml")) with open(os.path.join(tmpdir, ".ci_support/migrations/hi.yaml")) as f: saved_migration = f.read() assert saved_migration == m.yaml_contents
def test_xonsh_no_close_fds(): # see issue https://github.com/xonsh/xonsh/issues/2984 makefile = ("default: all\n" "all:\n" "\t$(MAKE) s\n" "s:\n" "\t$(MAKE) a b\n" "a:\n" "\tsleep 1\n" "b:\n" "\tsleep 1\n") with tempfile.TemporaryDirectory() as d, indir(d): with open("Makefile", "w") as f: f.write(makefile) out = sp.check_output(["make", "-sj2", "SHELL=xonsh"], universal_newlines=True) assert "warning" not in out
def test_xonsh_no_close_fds(): # see issue https://github.com/xonsh/xonsh/issues/2984 makefile = ( "default: all\n" "all:\n" "\t$(MAKE) s\n" "s:\n" "\t$(MAKE) a b\n" "a:\n" "\tsleep 1\n" "b:\n" "\tsleep 1\n" ) with tempfile.TemporaryDirectory() as d, indir(d): with open("Makefile", "w") as f: f.write(makefile) out = sp.check_output(["make", "-sj2", "SHELL=xonsh"], universal_newlines=True) assert "warning" not in out