]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
test: Add a way to set the environment for a pytest
authorSimon Glass <sjg@chromium.org>
Mon, 13 Feb 2023 15:56:40 +0000 (08:56 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 14 Feb 2023 16:43:27 +0000 (09:43 -0700)
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>
test/py/multiplexed_log.py
test/py/u_boot_utils.py

index 5e79075f2e64a682d2a59c630ca1ae4b23a6bdc8..63237594bb405ba3e1a97d7932eb4fba8c608c60 100644 (file)
@@ -111,7 +111,7 @@ class RunAndLog(object):
         """Clean up any resources managed by this object."""
         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.
 
         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
                 raised if such problems occur.
             stdin: Input string to pass to the command as stdin (or None)
+            env: Environment to use, or None to use the current one
 
         Returns:
             The output as a string.
@@ -139,7 +140,7 @@ class RunAndLog(object):
         try:
             p = subprocess.Popen(cmd, cwd=cwd,
                 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)
             if stdout is not None:
                 stdout = stdout.decode('utf-8')
index c4fc23aeda325a1c74401a7e15a7a1b4180a79b5..9e161fbc238803ca7fe2ceb427eda95d98d91346 100644 (file)
@@ -157,7 +157,7 @@ def wait_until_file_open_fails(fn, ignore_errors):
         return
     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.
 
     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
             problems occur.
         stdin: Input string to pass to the command as stdin (or None)
+            env: Environment to use, or None to use the current one
 
     Returns:
         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):
         cmd = cmd.split()
     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()
     return output