diff mbox series

[RFC,v2,2/3] fvp: runner: execute fvp process in the same working directory as fvpconf

Message ID 20230517100913.96055-2-peron.clem@gmail.com
State New
Headers show
Series [RFC,v2,1/3] runfvp: make fvp runner to hold the config | expand

Commit Message

Clément Péron May 17, 2023, 10:09 a.m. UTC
In Order to be able to have filepath relative to fvpconf, execute the
fvp process in the same working directory.

Signed-off-by: Clément Péron <peron.clem@gmail.com>
---
 meta-arm/lib/fvp/runner.py                 | 7 ++++++-
 meta-arm/lib/oeqa/selftest/cases/runfvp.py | 8 ++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/meta-arm/lib/fvp/runner.py b/meta-arm/lib/fvp/runner.py
index 4f5f88ca..7ca3673d 100644
--- a/meta-arm/lib/fvp/runner.py
+++ b/meta-arm/lib/fvp/runner.py
@@ -99,11 +99,16 @@  class FVPRunner:
             if name in os.environ:
                 env[name] = os.environ[name]
 
+        # Allow filepath to be relative to fvp configuration file
+        cwd = os.path.dirname(fvpconf)
+        self._logger.debug(f"FVP call will be executed in working directory: {cwd}")
+
         self._logger.debug(f"Constructed FVP call: {shlex_join(cli)}")
         self._fvp_process = subprocess.Popen(
             cli,
             stdin=subprocess.DEVNULL, stdout=stdout, stderr=subprocess.STDOUT,
-            env=env)
+            env=env,
+            cwd=cwd)
 
     def stop(self):
         if self._fvp_process:
diff --git a/meta-arm/lib/oeqa/selftest/cases/runfvp.py b/meta-arm/lib/oeqa/selftest/cases/runfvp.py
index 2d2cdc80..d60aa3c4 100644
--- a/meta-arm/lib/oeqa/selftest/cases/runfvp.py
+++ b/meta-arm/lib/oeqa/selftest/cases/runfvp.py
@@ -102,6 +102,7 @@  class RunnerTests(OESelftestTestCase):
             with tempfile.NamedTemporaryFile('w') as fvpconf:
                 json.dump(config, fvpconf)
                 fvpconf.flush()
+                cwd_mock = os.path.dirname(fvpconf.name)
                 fvp.start(fvpconf.name)
 
             m.assert_called_once_with(['/usr/bin/FVP_Binary',
@@ -112,7 +113,8 @@  class RunnerTests(OESelftestTestCase):
                 stdin=unittest.mock.ANY,
                 stdout=unittest.mock.ANY,
                 stderr=unittest.mock.ANY,
-                env={"FOO":"BAR", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"})
+                env={"FOO":"BAR", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"},
+                cwd=cwd_mock)
 
     @unittest.mock.patch.dict(os.environ, {"DISPLAY": ":42", "WAYLAND_DISPLAY": "wayland-42", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"})
     def test_env_passthrough(self):
@@ -132,10 +134,12 @@  class RunnerTests(OESelftestTestCase):
             with tempfile.NamedTemporaryFile('w') as fvpconf:
                 json.dump(config, fvpconf)
                 fvpconf.flush()
+                cwd_mock = os.path.dirname(fvpconf.name)
                 fvp.start(fvpconf.name)
 
             m.assert_called_once_with(['/usr/bin/FVP_Binary'],
                 stdin=unittest.mock.ANY,
                 stdout=unittest.mock.ANY,
                 stderr=unittest.mock.ANY,
-                env={"DISPLAY":":42", "FOO": "BAR", "WAYLAND_DISPLAY": "wayland-42", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"})
+                env={"DISPLAY":":42", "FOO": "BAR", "WAYLAND_DISPLAY": "wayland-42", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"},
+                cwd=cwd_mock)