builder/utils/execute_cmd: remove useless return value and add a test

Since we never pass in subprocess.PIPE for stdin/stdout/stderr,
subprocess.communicate() does nothing, and the return out/err tuple
was always empty.
This commit is contained in:
Owen W. Taylor
2021-01-27 16:21:24 -05:00
parent 728b96133d
commit cff90e587a
2 changed files with 17 additions and 2 deletions

View File

@@ -44,12 +44,11 @@ def execute_cmd(args, output=None, cwd=None):
log.info("Executing the command \"%s\"%s" % (" ".join(args), out_log_msg))
proc = subprocess.Popen(args, stdout=output, stderr=output, cwd=cwd)
out, err = proc.communicate()
proc.wait()
if proc.returncode != 0:
err_msg = "Command '%s' returned non-zero value %d%s" % (args, proc.returncode, out_log_msg)
raise RuntimeError(err_msg)
return out, err
def get_koji_config(mbs_config):

View File

@@ -17,6 +17,22 @@ from module_build_service.scheduler.db_session import db_session
from tests import read_staged_data, scheduler_init_data
def test_execute_cmd(tmpdir, caplog):
logfile = str(tmpdir / "out.log")
with open(logfile, "w") as f:
utils.execute_cmd(["echo", "hello"], output=f)
with open(logfile) as f:
assert f.read() == "hello\n"
assert 'Executing the command "echo hello", output log: %s' % logfile in caplog.text
def test_execute_cmd_fail():
with pytest.raises(RuntimeError):
utils.execute_cmd(["false"])
@pytest.mark.parametrize("variation", ("none", "empty", "already_downloaded"))
@patch("requests.get")
@patch("koji.ClientSession")