zephyr/scripts/west_commands/tests/test_xsdb.py
Mubin Sayyed 16d5d5e480 west_commands: runners: Fix parameters passed to xsdb
Existing logic is passing elf file as parameter only when fsbl
or bit file parameter is present. This is incorrect, elf file should
be always passed irrespective of other parameters.

Signed-off-by: Mubin Sayyed <mubin.sayyed@amd.com>
2025-02-14 08:44:54 +01:00

88 lines
2.7 KiB
Python

# Copyright (c) 2024 Advanced Micro Devices, Inc.
#
# SPDX-License-Identifier: Apache-2.0
import argparse
from unittest.mock import patch, call
import pytest
from runners.xsdb import XSDBBinaryRunner
from conftest import RC_KERNEL_ELF
TEST_CASES = [
{
"config": None,
"bitstream": None,
"fsbl": None,
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF],
},
{
"config": "custom_cfg_path",
"bitstream": None,
"fsbl": None,
"expected_cmd": ["xsdb", "custom_cfg_path", RC_KERNEL_ELF],
},
{
"config": None,
"bitstream": "bitstream_path",
"fsbl": None,
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF, "bitstream_path"],
},
{
"config": None,
"bitstream": None,
"fsbl": "fsbl_path",
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF, "fsbl_path"],
},
{
"config": None,
"bitstream": "bitstream_path",
"fsbl": "fsbl_path",
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF, "bitstream_path", "fsbl_path"],
},
]
@pytest.mark.parametrize("tc", TEST_CASES)
@patch("runners.xsdb.os.path.exists", return_value=True)
@patch("runners.xsdb.XSDBBinaryRunner.check_call")
def test_xsdbbinaryrunner_init(check_call, path_exists, tc, runner_config):
'''Test actions using a runner created by constructor.'''
# Mock the default config path
with patch("runners.xsdb.os.path.join", return_value="default_cfg_path"):
runner = XSDBBinaryRunner(
cfg=runner_config,
config=tc["config"],
bitstream=tc["bitstream"],
fsbl=tc["fsbl"],
)
runner.do_run("flash")
assert check_call.call_args_list == [call(tc["expected_cmd"])]
@pytest.mark.parametrize("tc", TEST_CASES)
@patch("runners.xsdb.os.path.exists", return_value=True)
@patch("runners.xsdb.XSDBBinaryRunner.check_call")
def test_xsdbbinaryrunner_create(check_call, path_exists, tc, runner_config):
'''Test actions using a runner created from action line parameters.'''
args = []
if tc["config"]:
args.extend(["--config", tc["config"]])
if tc["bitstream"]:
args.extend(["--bitstream", tc["bitstream"]])
if tc["fsbl"]:
args.extend(["--fsbl", tc["fsbl"]])
parser = argparse.ArgumentParser(allow_abbrev=False)
XSDBBinaryRunner.add_parser(parser)
arg_namespace = parser.parse_args(args)
# Mock the default config path
with patch("runners.xsdb.os.path.join", return_value="default_cfg_path"):
runner = XSDBBinaryRunner.create(runner_config, arg_namespace)
runner.do_run("flash")
assert check_call.call_args_list == [call(tc["expected_cmd"])]