This is an automated email from the ASF dual-hosted git repository. klueska pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
The following commit(s) were added to refs/heads/master by this push: new 963de3b Added 'exec_command' to test util functions for the new CLI. 963de3b is described below commit 963de3b1811ef569449102192d40ca2cbed73b3c Author: Armand Grillet <agril...@mesosphere.io> AuthorDate: Mon Oct 22 09:28:28 2018 -0400 Added 'exec_command' to test util functions for the new CLI. This code was mostly pulled directly from: https://github.com/dcos/dcos-core-cli/blob/ 7fd55421939a7782c237e2b8719c0fe2f543acd7/ python/lib/dcoscli/dcoscli/test/common.py This function will be used by tests that do not return a specific output but an error code, stdout, and stderr. This will be the case for tests concerning the 'task exec' and 'task attach' subcommands. Review: https://reviews.apache.org/r/69114/ --- src/python/cli_new/lib/cli/tests/base.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/python/cli_new/lib/cli/tests/base.py b/src/python/cli_new/lib/cli/tests/base.py index 3fb471c..7fd39af 100644 --- a/src/python/cli_new/lib/cli/tests/base.py +++ b/src/python/cli_new/lib/cli/tests/base.py @@ -445,3 +445,29 @@ def capture_output(command, argv, extra_args=None): sys.stdout = stdout return output + + +def exec_command(command, env=None, stdin=None, timeout=None): + """ + Execute command. + """ + process = subprocess.Popen( + command, + stdin=stdin, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=env, + universal_newlines=True) + + try: + stdout, stderr = process.communicate(timeout=timeout) + except subprocess.TimeoutExpired as exception: + # The child process is not killed if the timeout expires, so in order + # to cleanup properly a well-behaved application should kill the child + # process and finish communication. + # https://docs.python.org/3.5/library/subprocess.html + process.kill() + stdout, stderr = process.communicate() + raise CLIException("Timeout expired: {error}".format(error=exception)) + + return (process.returncode, stdout, stderr)