From 1fa602ad3ba9356110c085cb9d92286d691294f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Date: Wed, 17 May 2023 12:09:12 +0200 Subject: [PATCH] fvp: runner: execute fvp process in the same working directory as fvpconf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Jon Mason --- meta-arm/lib/fvp/runner.py | 7 ++++++- meta-arm/lib/oeqa/selftest/cases/runfvp.py | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) 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)