test: Add a way to set the environment for a pytest

This is useful when we need to control a particular environment variable.
Add a way to handle this.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-02-13 08:56:40 -07:00
parent 441a3d0a7a
commit 7e91bf892f
2 changed files with 6 additions and 4 deletions

View file

@ -111,7 +111,7 @@ class RunAndLog(object):
"""Clean up any resources managed by this object.""" """Clean up any resources managed by this object."""
pass pass
def run(self, cmd, cwd=None, ignore_errors=False, stdin=None): def run(self, cmd, cwd=None, ignore_errors=False, stdin=None, env=None):
"""Run a command as a sub-process, and log the results. """Run a command as a sub-process, and log the results.
The output is available at self.output which can be useful if there is The output is available at self.output which can be useful if there is
@ -126,6 +126,7 @@ class RunAndLog(object):
or exits with an error code, otherwise an exception will be or exits with an error code, otherwise an exception will be
raised if such problems occur. raised if such problems occur.
stdin: Input string to pass to the command as stdin (or None) stdin: Input string to pass to the command as stdin (or None)
env: Environment to use, or None to use the current one
Returns: Returns:
The output as a string. The output as a string.
@ -139,7 +140,7 @@ class RunAndLog(object):
try: try:
p = subprocess.Popen(cmd, cwd=cwd, p = subprocess.Popen(cmd, cwd=cwd,
stdin=subprocess.PIPE if stdin else None, stdin=subprocess.PIPE if stdin else None,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT) stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=env)
(stdout, stderr) = p.communicate(input=stdin) (stdout, stderr) = p.communicate(input=stdin)
if stdout is not None: if stdout is not None:
stdout = stdout.decode('utf-8') stdout = stdout.decode('utf-8')

View file

@ -157,7 +157,7 @@ def wait_until_file_open_fails(fn, ignore_errors):
return return
raise Exception('File can still be opened') raise Exception('File can still be opened')
def run_and_log(u_boot_console, cmd, ignore_errors=False, stdin=None): def run_and_log(u_boot_console, cmd, ignore_errors=False, stdin=None, env=None):
"""Run a command and log its output. """Run a command and log its output.
Args: Args:
@ -170,6 +170,7 @@ def run_and_log(u_boot_console, cmd, ignore_errors=False, stdin=None):
an error code, otherwise an exception will be raised if such an error code, otherwise an exception will be raised if such
problems occur. problems occur.
stdin: Input string to pass to the command as stdin (or None) stdin: Input string to pass to the command as stdin (or None)
env: Environment to use, or None to use the current one
Returns: Returns:
The output as a string. The output as a string.
@ -177,7 +178,7 @@ def run_and_log(u_boot_console, cmd, ignore_errors=False, stdin=None):
if isinstance(cmd, str): if isinstance(cmd, str):
cmd = cmd.split() cmd = cmd.split()
runner = u_boot_console.log.get_runner(cmd[0], sys.stdout) runner = u_boot_console.log.get_runner(cmd[0], sys.stdout)
output = runner.run(cmd, ignore_errors=ignore_errors, stdin=stdin) output = runner.run(cmd, ignore_errors=ignore_errors, stdin=stdin, env=env)
runner.close() runner.close()
return output return output